指针一维数组名的含义


&a[0]表示第一个元素变量的地址值

a表示数组第一个元素的地址

#include <stdio.h>

int main() {

	int a[5];       //a是数组名 
	//int b[3][4];
	int b[5];
	//a = b;   报错error   a是常量
//	printf("%lf\n", &a[0]);
	printf("&a[0]=%#X\n", &a[0]);
	printf("&a[0]+1=%#X\n", &a[0]+1);
	printf("&a[1]=%#X\n", &a[1]);

	printf("&a=%#X\n", &a);
	printf("a=%#X\n", a);
	printf("&a+1=%#X\n", &a+1);
	printf("a+1=%#X\n", a+1);
//	printf("%#X\n", 470812087);  //0X1C1005B7

	while (true){	}

}

可以看到虽然a和&a的地址是一样的,但是a+1的地址向后走了四个字节,也就是跳过了一个元素。所以a代表的是首元素的地址

&a+1可以看到和arr相差20个字节,是跳过了整个数组。那么&a表示的是取整个数组的地址而不是数组首元素的地址 。

&a[0]表示首元素的地址

&a[0]+1=&a[1]            &a[1]表示第二个元素的地址

从输出结果可以看出,数组的元素的地址是连续的

发布了245 篇原创文章 · 获赞 95 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ywl470812087/article/details/103329164