C语言指针操作详解: (&a+1) 与 ((long)a+1) 的区别
"long a[4] = {1, 2, 3, 4};\nlong *p1 = (long *)(&a + 1);\nlong p2 = (long )((long)a + 1);\n上述代码中第二行的(&a+1)和第三行的((long)a+1)分别是什么意思\n内容:第二行的(&a+1)表示数组a的地址加上数组a的大小,即指向数组a之后的位置。因为数组a是一个长度为4的long类型数组,所以a的大小为4sizeof(long),即48=32字节。所以(&a+1)指向的是数组a之后的32个字节的位置。\n\n第三行的((long)a+1)表示将数组a的地址强制转换为long类型,并向后偏移1个字节。这里的强制转换是为了将数组a的地址当作一个整数来处理。所以((long)a+1)指向的是数组a的地址向后偏移1个字节的位置。
原文地址: https://www.cveoy.top/t/topic/pRDr 著作权归作者所有。请勿转载和采集!