指针算术

时间:2012-02-22 16:24:10

标签: c++ math pointers

在处理数组时试图理解指针运算。在我看来,它们被用于快速访问数组,但也许我完全错了。我的意思是,如果我们有这个:

*(myArray + 1),我想要进入数组中的下一个位置。

我正在将一些C ++转换为C#,而C ++正在进行指针运算。我需要完全管理C#,以便弄清楚如何将指针转换为C#。

感谢任何想法。

大卫

4 个答案:

答案 0 :(得分:2)

*(myArray + 1)完全等同于myArray[1]。你应该总是喜欢后者。它更容易阅读,性能也没有差异。

答案 1 :(得分:2)

也许这会有所帮助:http://www.cplusplus.com/doc/tutorial/pointers/

而*(myArray +1)等于myArray [1]。

答案 2 :(得分:2)

如果你对指针不太满意,那么你在C#中的生活会更容易一些。首先,您发布的代码:

`*(myArray + 1)`

您的理解基本上是正确的,您正在取消引用myArray中的第一个元素。或者换句话说,访问myArray[1]

转到C#,您可能会使用通用List<T>,其中TmyArray的类型。我们可以使用类似的语法 - myArray[i],以及List上的更多函数。

答案 3 :(得分:2)

假设myArray指向数组的开头(任何名称,它应该是),*(myArray + 1)myArray[1]相同,后者是可读性的首选

转换指针算术代码的棘手部分是当您使用指向数组的某个随机部分的指针时 - *(current + 1)其中current是指向数组中任意元素的指针。在这里,你必须弄清楚原始数组和current指向的元素数组中的索引。假设它是myArrayi,则上述代码转换为myArray[i+1]

相关问题