#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\n", a *a, &a); printf("%d, %d, %d, %d\n", *(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
本文通过一个C语言示例程序详细解析了数组名、数组指针、数组地址的概念及它们之间的区别,并展示了如何使用指针进行数组元素的访问。

被折叠的 条评论
为什么被折叠?



