程式語言新手可能看外國人寫的書看不懂建議看中華民國台灣的專家教授寫的書
以下取材自
洪維恩 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