#include "stdafx.h" #include <stdio.h> #include <string.h> int main() { int x[5] = {1, 2, 3, 4, 5}; int *p = (int *)(&a+1); int *p1 = (int *)(a+1); printf("%d, %d, %d ", a *a, &a); printf("%d, %d, %d, %d ", *(a+1), *p, *(p-1), *(p1-1)); }
输出结果为:
1. 数组名a可以作为数组的首地址; *a为数组的指针,取值为1; &a为取数组a的地址;
2. 指针p指向的是数组a的地址+1,那么*p指向的是&a+1的地址的值,*(p-1)指向的是&a+1的地址减1,数组的地址是连续的,&a+1的地址减1为&a的地址,取值为5