Sam*_*Sam 6 .net c# arrays pointers
当使用指向数组的指针时,我总是使用索引器访问元素,例如myPtr[i] = stuff; 然而,我最近在查看BitConverter实现,并发现通过实现访问元素*(myPtr + i) = stuff.
我认为这很奇怪,因为两种方法(从我所知道的)做同样的事情,也就是说,它们返回地址myPtr + i,除了(在我看来)索引器方法看起来更具可读性.
那么为什么微软选择以他们的方式增加指针,这两种方法之间有什么区别(是否有性能优势)?
正如你所说,他们做同样的事情。
事实上,当访问 an 时int*,ptr[i]和语法都会跳过边界检查,并且如果大于数组长度*(ptr + i)则指向数组边界之外的某些内存。i
我非常确定 C# 以及 C++ 使用*(ptr + index)C 的语法继承了对数组指针的索引访问。我非常确定这是两种语法都可用的唯一原因。