一个指针保存另一个变量的地址, 如果要访问指针所指向的值,请使用星号“ *”。例如:
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”。
我很困惑。请帮帮我。