註冊登錄
伊莉討論區返回首頁

thelord2009的個人空間http://m.eyny.com/?5788411[收藏][複製][分享][RSS]

日誌

學會程式語言【指標】的要領在這裡

已有 1199 次閱讀2022-2-21 04:28 PM

程式語言新手可能看外國人寫的書看不懂
建議看中華民國台灣的專家教授寫的書
以下取材自 
洪維恩 C++ 教學手冊, 3/e
他還有寫很多淺顯易懂的書
Java 7 教學手冊, 5/e
C 語言教學手冊, 4/e
把上述的書看完就是基本程式語言能力的專家了

*是取值  &是取位址
洪維恩 C++ 教學手冊, 3/e 指標 頁數9-17
{
int a=12;
int *ptr=&a
address(&a);
address(ptr);
}
void address(int *p1)
{
cout<<"於位址"<<p1<<"內,儲存的變數內容為"<<*p1<<endl;
return;
}
~~~
上述首先要知道的
address(&a)
則*p1=&a
address(ptr)
則*p1=ptr
那麼在函式void address(int *p1)裡輸出的結果
於位址0x22ff74內,儲存的變數內容為12
於位址0x22ff74內,儲存的變數內容為12
代表函式void address(int *p1)如果是cout<<p1輸出的是位址,因為p1=&a,ptr=&a
如果是cout<<*p1輸出的是a的值,因為*p1=*&a=a(*和&抵銷)*ptr=*&a=a(*和&抵銷)

洪維恩 C++ 教學手冊, 3/e 再談指標 頁數10-3
{
int n=20,*p,**pp
p=&n;
pp=&p
}
由於程式碼字數太多,自己買書來看
輸出結果
n=20
&n=0x22ff74
*p=20
p=0x22ff74
&p=0x22ff70
**pp=20
*pp=0x22ff74
pp=0x22ff70
&pp=0x22ff6c
~~~
**pp=**&p(*和&抵銷)=*p=*&n(*和&抵銷)=n
所以上述**pp=*p=n=20
*pp=*&p(*和&抵銷)=p=&n
所以上述*pp=p=&n=0x22ff74

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelistdoodle 塗鴉板

您需要登錄後才可以評論 登錄 | 註冊
驗證問答 換一個

Archiver|手機版|廣告|聯絡我們|廣告查詢|廠商合作|伊莉

GMT+8, 2024-5-16 02:23 AM

回頂部