指针+1会发生什么?
2019-06-11 本文已影响0人
SnC_
指针本身的大小,与计算机架构有关,如今一般为8字节。
指针的内容,为其指向data的地址。
char *a = "qw";
printf("%p %p",a,a+1);
结果为0x1023d0fad
0x1023d0fae
,两者地址相差1byte。char类型的大小为1byte。
void指针与char指针相同,指针加1,地址相差1byte
int a = 1;
int *b = &a;
printf("%p %p\n",b,b+1);
结果为 0x7ffeee050ae8
0x7ffeee050aec
,两者地址相差4byte。int类型的大小为4byte。
可知,指针+1,结果为 指针内容+sizeof(指针类型)*1
Remark
此性质使得指针可以完成数组取数据的操作。
数组作为函数参数时,可以指针传递。