数组名本身会产生一个内存位置,因此您可以将数组名视为指针:
int a[7];
a[0] = 1976;
a[1] = 1984;
printf("memory location of a: %p", a);
printf("value at memory location %p is %d", a, *a);
除了可以对指针执行其他有趣的操作(例如,添加/减去偏移量)之外,还可以对数组执行其他有趣的操作:
printf("value at memory location %p is %d", a + 1, *(a + 1));
从语言角度来看,如果 C 没有将数组公开为 某种“指针” (严格地说,它只是一个内存位置。它不能指向内存中的任意位置,也不能由程序员控制)。我们总是需要编写这样的代码:
printf("value at memory location %p is %d", &a[1], a[1]);