问一个指针问题

##求问 int *p = (int *)(&arrayName + 1); 为啥是增加16字节啊

int arrayName[4] = {10, 20, 30, 40};
int *p = (int *)(&arrayName + 1);
NSLog(@"%d", (&arrayName - 1));
1.(&arrayName + 1):&arrayName是数组的地址(等价于指向arrayName数组的指针)
2.增加 1 会往后移动16个字节,开始是4个字节的位置,移动后就是16个字节后面的位置(也就是目前位置是20个字节)

sizeof(arrayName) == 16

1 个赞

哥,可能是我表达的不清楚吧,我是疑问 (&arrayName + 1) 这个1会偏移16位,这地方不懂

好好看看c吧。别玩逆向了

1 个赞

zhang加了我的微信
正解
对指针+1就是+该指针指向结构长度