不能对 void 指针使用指针运算,那么 void 指针数组是如何工作的呢?
You can't use pointer arithmetic on void pointers, so how do arrays of void pointers work?
根据阅读教程,我的理解是运算符 ([]) 在幕后与指针运算执行相同的操作。
Learncpp有下面的说法"It turns out that when the compiler sees the subscript operator ([]), it actually translates that into a pointer addition and dereference!".
Wikibooks 然后说 "A variable declared as an array of some type acts as a pointer to that type. When used by itself, it points to the first element of the array."
然后在阅读了 void 指针之后,我很想知道它们的数组是如何工作的?我想我的理解一定是错误的。
举个例子,下面两个应该是相同的。
一)
void* array[5];
array[1] = nullptr;
b)
void* array[5];
*(array + 1) = nullptr;
在你的例子中,指针数组基本上就是 **
- void**
。
你知道 void*
的大小,因为它只是另一个指针。
根据阅读教程,我的理解是运算符 ([]) 在幕后与指针运算执行相同的操作。
Learncpp有下面的说法"It turns out that when the compiler sees the subscript operator ([]), it actually translates that into a pointer addition and dereference!".
Wikibooks 然后说 "A variable declared as an array of some type acts as a pointer to that type. When used by itself, it points to the first element of the array."
然后在阅读了 void 指针之后,我很想知道它们的数组是如何工作的?我想我的理解一定是错误的。
举个例子,下面两个应该是相同的。
一)
void* array[5];
array[1] = nullptr;
b)
void* array[5];
*(array + 1) = nullptr;
在你的例子中,指针数组基本上就是 **
- void**
。
你知道 void*
的大小,因为它只是另一个指针。