之前提到
假設我設了int指標變數*ptr,num=20
&符號可用來取得變數的位址
ptr=#
則*ptr有自己的位址&ptr
因為ptr=&num
所以ptr存放&num的位址
所以輸出ptr是輸出&num的位址
但是因為*是依位址取值運算子
所以輸出*ptr是輸出&num的位址的值20
依照
C最強入門邁向頂尖高手之路王者歸來
告訴我們:
頁數11-32
int x[5];
int *ptr;
ptr=x; 或是使用ptr=&x[0];
或是
int x[5];
int *ptr=x;
上述的意思是
如果先宣告指標
int *ptr;
再讓指標去指著目標則是
ptr=&x;
而
ptr=x;和ptr=&x;的意思一樣應該是
即使用ptr=x;
編譯器自己知道意思是ptr=&x;
如果是同時宣告指標+指著目標
int *ptr=x;
和上述的寫法
int *ptr;
ptr=x;
意思一樣應該是因為
同時宣告指標+指著目標
編譯器自己會隱式地自動定義ptr=&x;
大家也要注意
之前提過
int *func1(int *);
函數func1傳回值型態為int *,不是()裡頭的int *。
因此函數裡頭的return回傳值
應該是return *ptr
return 依址取值的*ptr(要有*號)