1. 数组名涵义
-
在C语言程序中,数组的出现有两种可能的含义:
- 代表整个数组
- 代表其首元素的地址
-
当出现以下情形时,数组代表的是整个数组:
- 在数组定义中
- 在 sizeof 运算表达式中
- 在取址符&中
-
当出现其他情形时,数组代表其首元素地址。
-
示例:
int a[3]; // 此处,a 代表整个数组
printf("%d\n", sizeof(a)); // 此处,a 代表整个数组
printf("%p\n", &a); // 此处,a 代表整个数组,此处为整个数组的地址
int *p = a; // 此处,a 代表首元素 a[0] 的地址,等价于 &a[0]
p = a + 1; // 此处,a 代表首元素 a[0] 的地址,等价于 &a[0]
function(a); // 此处,a 代表首元素 a[0] 的地址,等价于 &a[0]
scanf("%d\n", a); // 此处,a 代表首元素 a[0] 的地址,等价于 &a[0]
C语言中的数组,在不同场合下有不同的含义,大部分场合都表现为首元素的地址,此时实际上就是一个指向其首元素的指针。数组运算实际上就是指针运算。
本文解释了C语言中数组在定义、sizeof运算、取址符、指针赋值和函数参数传递等场景下的两种含义:一是整个数组,二是首元素地址。大多数情况下,数组被视为首元素的地址,实质上是该元素的指针。
19万+

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



