C/C++数组首元素的地址和数组地址的区别

1、首先数组首元素的地址和数组地址的值是相等的。

2、数组首元素的地址和数组地址是两个不同的概念。

3、举例如下:

#include<stdio.h>

void main() {
	int a[10] = {};
	printf("%d\n", a);
	printf("%d\n", a+1);    //与前面一个相差4
	printf("%d\n", &a);
	printf("%d\n", &a + 1); //与前面一个相差40	
}

输出结果如下:

a的值是数组首元素的地址,所以a+1,就是第二个元素的地址,int类型占用4个字节,所以相差4

而&a是整个数组的地址,所以&a+1,就是向后移动(10*4)个单位。所以相差40.

自己的思考:其实a的本质是指针,就像[](中括号)的本质是*一样,所以当a+1的时候,指针向后偏移sizeof(int)的大小。而&a这个时候的a是一个变量。这个变量是int [10].所以&a+1,偏移10*sizeof(int).

猜你喜欢

转载自blog.csdn.net/Raven_csdn/article/details/87874679