程序員的輸出:指向自己的整數數組的起始地址?
#include<stdio.h>
int main(){
int A[3] = {1,2,3};
printf("%u %u %u ",&A,A,*A);
return 0;
}
是:3216303812 3216303812 1
這裏& A和A是相同的,這意味着地址作爲即A的值是指向本身是相同的。和*存儲在3216303812的平均值是A本身,因爲我們知道& A = A ..所以1來自哪裏?怎麼來* A = 1?請幫助
程序員的輸出:指向自己的整數數組的起始地址?
#include<stdio.h>
int main(){
int A[3] = {1,2,3};
printf("%u %u %u ",&A,A,*A);
return 0;
}
是:3216303812 3216303812 1
這裏& A和A是相同的,這意味着地址作爲即A的值是指向本身是相同的。和*存儲在3216303812的平均值是A本身,因爲我們知道& A = A ..所以1來自哪裏?怎麼來* A = 1?請幫助
A
是指向該陣列的第一個元素的指針,即它等於&A[0]
。
&A
是指向整個陣列。
當然這些地址具有相同的值值,因爲數組的第一個元素的地址與數組的地址相同。但是它們有不同的類型:A
產生一個指向int的指針,而&A
是一個指向int數組的指針。
感謝卡爾,其實我想了解相同的內存安排,因爲A是數組的起始地址,所以理想的內存安排應該是類似的,在3216303812 - > 1(i,e * A),在3216303816→2(即*(A + 1))並且在3216303812→3(即*(A + 2))。但* A相當於*(3216303812),我在內存地址3216303812處看到我們有A,因爲&A = 3216303812,而A是3216303812,所以* A應該是3216303812.請糾正我在哪裏出錯。 – user2588495
@ user2588495:再次閱讀上面的答案,仔細理解 - 即使它們具有相同的*值*(地址),'A'和'&A'也是不同*類型*。 –
A
表示&A[0]
,所以*A
等於數組中第一個元素的值,因此輸出爲1
。
重複數百次以上。 –
...但我投票認爲是一個愚蠢的人不是一個。繁忙的使用返回鍵讓我。 –