我嘗試Ubuntu的終端概念在C指針不明確
int main() {
int y = 10;
int *int_ptr;
int_ptr = (int *) y;
}
我分配在program.I這些代碼想知道有關的步驟說明正確執行上面的代碼的代碼。在最後一行代碼中,如果它是int_ptr =&y; 我沒有問題,但與我的代碼我沒有得到我指向int_ptr指針。
我嘗試Ubuntu的終端概念在C指針不明確
int main() {
int y = 10;
int *int_ptr;
int_ptr = (int *) y;
}
我分配在program.I這些代碼想知道有關的步驟說明正確執行上面的代碼的代碼。在最後一行代碼中,如果它是int_ptr =&y; 我沒有問題,但與我的代碼我沒有得到我指向int_ptr指針。
int *int_ptr;
int_ptr
是指存儲int
類型的變量的地址。 要獲取變量說的地址int t
您需要使用&運算符。 但通過做你剛剛做的你剛剛分配的整數10到int_ptr
。
當你聲明變量說
int x = 34;
有兩樣東西在作怪:
要通過指針訪問x
,您需要第一個值。
用最後一行,你分配給int_ptr地址0x0000000A。 因此,對於* int_ptr,您正在讀取地址存儲在0x0000000A處的內存塊。
發佈代碼時發生錯誤,但會投標(int *)
正在遮罩它。
你應該好好y
的地址,使int_ptr
點y
:
int main(void) {
int y = 10;
int *int_ptr;
int_ptr = &y;
}
使用轉換,你是在告訴你知道你在做什麼,編譯器和真要到轉換值的y
作爲地址int
存儲到int_ptr
。如果沒有轉換,編譯器應該發出警告,告訴您可能發生的編程錯誤。
你明白'y'和'&y'的區別嗎? –
閱讀一本關於'C'的好書 – dlmeetei
我們不是老師,在線免費學習基礎C課程。 –