
#include <stdio.h>
#include <stdlib.h>
int main() {
int a = 1;
int* ptr;
ptr = &a;
printf("ptr is: %p\n", ptr);
ptr++;
printf("ptr+1 is: %p\n", ptr);
return 0;
}
在上述代码中,首先定义了一个int类型的变量a,和一个int类型的指针ptr,然后将a的地址赋值给指针变量ptr。
将地址ptr打印出来,然后打印ptr加1,看的的结果如下:

ptr is: 0000008C55EFF514
ptr+1 is: 0000008C55EFF518
我们执行了ptr++操作,但是地址却增加了4个字节,这是为什么呢?
这是因为指针变量执行ptr++操作时,由于这个数组是int类型,int的size是4 byte,所以地址加了4个字节。
可以将int类型改为char型来验证一下:

#include <stdio.h>
#include <stdlib.h>
int main() {
char a = 1;
char* ptr;
ptr = &a;
printf("ptr is: %p\n", ptr);
ptr++;
printf("ptr+1 is: %p\n", ptr);
return 0;
}

ptr is: 000000C5D8CFF634
ptr+1 is: 000000C5D8CFF635


















