直觉上会认为:地址+1 = 地址的数值+一个16进制数。其实不然。
结论:地址+1 = 地址数值+该地址指向的变量的大小,单位是字节
之所以c语言具有此特性是因为,地址+1应当被理解为下一个地址,而找到下一个地址则需要跳过当前地址所指向的变量在内存中所占的空间
验证:
试验1
int a = 0;
printf("%p\n", &a);
printf("%p\n", &a+1);
以上代码试运行的结果为:
012FFCA4
012FFCA8,符合结论
试验2
long long a = 0;
printf("%p\n", &a);
printf("%p\n", &a+1);
以上代码试运行的结果为:
0135FC50
0135FC58,符合结论
试验3
char a = '0';
printf("%p\n", &a);
printf("%p\n", &a+1);
以上代码试运行的结果为:
0059FE33
0059FE34,符合结论