尝试理解处理数组时的指针算术。似乎它们是用于快速访问数组的,但也许我完全错了。我的意思是如果我们有这个:
*(myArray + 1),我认为我们将进入数组的下一个位置。
我正在将一些C++代码转换为C#,而C++中涉及到了指针算法。我需要C#完全受控,所以需要弄清如何将指针内容翻译成C#。
谢谢任何建议。
David
*(myArray + 1)
等同于 myArray[1]
。你应该始终选择后者,因为它更易读,并且在性能上没有区别。
`*(myArray + 1)`
您的理解基本上是正确的,您正在取消引用myArray
中的第一个元素。换句话说,访问myArray[1]
。
转到C#,您可能会使用通用的List<T>
,其中T
是您的myArray
的类型。类似的语法可供您使用-myArray[i]
,以及List
上的许多其他函数。
myArray
指向数组的开头(根据其名称应该是这样),*(myArray + 1)
与myArray[1]
是相同的,但后者更易读。*(current + 1)
其中current
是指向数组中任意一个元素的指针。在这里,您必须找出原始数组及其内部元素的索引,以确定current
指向的元素。假设它是myArray
和i
,则上面的代码可翻译为myArray[i+1]
。