#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