C语言,数组名与数组第一个元素的关系

2025-04-06 13:37:09
推荐回答(1个)
回答1:

数组是多个元素的集合,而其第一个元素只是它的一个部分


当我们定义一个数组时,要用到方括号修饰符, 如

int a[10];

这也就决定了它的类型为int [10],但其元素的类型却为int


区别:

而C中的指针和数组实际上十分类似(但数组的指针为常量),所以当你尝试用整型(若要用printf完整输出应该用“%ld”格式化)的格式输出一个数组时,一般会输出一个-9223372036854775807 ~ 9223372036854775807的整数,其实质是数组的起始位置的指针。(注意,输出的范围根据cpu的位数而不同,以上为64位输出的结果)

而当你用a[0]来使用第一个元素时,其类型为int


关系:

在区别中已经提到,指针和数组十分类似,也就是说可以用用于指针的一元运算符”解引用“(*)来获得一个数组的第一个元素。

也就是说,一下两个表达式是等效的

a[0]
*a

那么同理,我们也可以用“取地址“运算符(&)来获取第一个元素的地址,也就是数组的地址(注意,这里的等号不是赋值语句,只是表示左右两个表达式等效)

a = &a[0]