在C语言中,数组名代表数组中首元素的地址,所以,下面两句获取数组的首地址是等价的:
#include<stdio.h> int main() { int a[5]={1,2,3,4,5}; int *p=&a[0]; int *p2=a; printf("地址p=%p\n",p); printf("地址p2=%p",p2); return 0; }
输出结果:
地址p=000000000061FDF0
地址p2=000000000061FDF0
根据指针地址偏移,可以打印数组
#include<stdio.h> int main() { int a[5]={1,2,3,4,5}; int *p=&a[0]; int *p2=a; printf("地址p=%p\n",p); printf("地址p2=%p\n",p2); printf("打印数组:\n"); for(int i=0;i<sizeof(a)/sizeof(a[0]);i++) { printf("%d",*(p+i));//带上*表示取该地址的值 } return 0; }
输出结果:
地址p=000000000061FDF0
地址p2=000000000061FDF0
打印数组:
12345