指针变量加1为什么地址加了4?
#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