对于数组a[],数组首地址是&a,数组首元素地址是&a[0],这两者数值上相等,但是在进行地址加减时,表示的意义不同:
-
数组名可以认为是一个
指针
,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址。数组名的本意表示整个数组,也就是表示多份数据的集合,但
在使用过程中经常会转换为指向数组第 0 个元素的指针,所以上面使用了“认为”一词,表示数组名和数组首地址并不总是等价
。 - &a+1,其中”1″的大小指的是整个数组的所占大小,例如数组a[4],&a +1实际上是 a[5],就是跳过一个数组
- 而&a[0]+1,其中的”1″的大小指的是一个元素所占大小,例如数组a[4],&a[0] +1实际上是 a[1]
#include <stdio.h>
int main(){
int arr[] = { 99, 15, 100, 888, 252 };
int len = sizeof(arr) / sizeof(int); //求数组长度
int i;
for(i=0; i<len; i++){
printf("%d ", *(arr+i) ); //*(arr+i)等价于arr[i]
}
printf("\n");
return 0;
}
版权声明:本文为weixin_40721097原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。