数组名称如何指向C中的数组元素?

时间:2018-08-24 11:11:35

标签: c arrays pointers

一个指针保存另一个变量的地址, 如果要访问指针所指向的值,请使用星号“ *”。例如:

int *p,a=2;
p=&a;
printf("%u\n",p);   // the value of 'p' i.e. address of variable 'a'
printf("%u\n",&p);  // the address of pointer 'p'
printf("%u\n",*p);  // the value at value of 'p' i.e. 2 (a=2) 

给予:

186199596
186199600
2

没关系。但是在这个片段中

int a[]={11,21,31,41,51};
printf(" a = %u\n",a);   
printf("*a = %u\n",*a);  
printf("&a = %u\n",&a);  

输出为

 a = 171273136
*a = 11
&a = 171273136

数组名称指向数组的第一个元素(基地址)。所以“ a”给我数组的基地址,好吧。

* a给我第一个元素的值(或基地址的值)

但是'&a'给我'a'本身的地址。 它是一个自指针吗? 如果是,则“ a”应具有其自己的地址值。 那么* a应该给我自己的地址(即a的值)。但这给了我11

这个“ 11”从哪里来?是名为“ a ”的内存地址 171273136 具有两个值“ 11”和“ 171273136”。

我很困惑。请帮帮我。

0 个答案:

没有答案