今天来说说数组名,经过查资料和自己的理解,发现数组名就是指针常量。
不废话,先上程序:
#include<stdio.h>
int main()
{
int a[3]={1,2,3};
int (*b)[3]=&a;
printf("a的值是%d,a[0]的值是%d,a的地址是%d\n",a,a[0],&a);
printf("b的地址是%d,b的值是%d,*b的值是%d,**b的值是%d\n",&b,b,*b,**b);
return 0;
}
运行结果:
在这个程序中我使用了一个数组指针指向了一个一维数组,我们发现不仅a的值与a的地址(即&a)是一个值,而且数组指针b中存放的值也和*b是一样的。
这个时候疑问就来了,b是地址的话,那么*b不就是取b地址里的内容么,为何*b不与a[0]的值相同呢?
原来,我们的数组名a是一个指针常量,如果我们想通过指针b来取a数组中的元素的话,就相当于要通过于一个二级指针,这时要加两个*号啦,
所以**b的值才与a[0]相同。