我有一个C数组如下:
unsigned long arr[10];
在我的机器上,unsigned long
是8个字节。我有一种情况,我使用arr [0]写4个字节,然后需要找到数组中下一个字节的地址。
void * ptr = arr[0] + (sizeof(unsigned long) / 2);
以上是否有效?
答案 0 :(得分:6)
不,不会。您应该首先转换为char*
,然后执行指针算法。
void * ptr = ((char*) &arr[0]) + (sizeof(unsigned long) / 2);