雖然是基本的東西,但是最近比較常碰,還當作複習再整理一次。
剛好看到一篇文章內有舉例,就拿來說明一下。
第一種使用方式應該沒有問題,
但先前常常把二和三搞混,不都是指標嗎? 錯了。
說明如下(直接引用網址內的範例):
符號出現位置不同,代表不同的意義。
1.先來說說 "&":
"&" 如果出現在宣告,那就是 reference 用途,或者稱作別名(大陸用語?)
例如上圖 bool Compare(string &s1, string &s2) ,當呼叫Compare(x,y)時,
不論x是什麼型態,指針還是一般值變數,都會是相等的,
可以直接把s1視作x,因為s1就只是代替x進行操作而已,
所以不管是指標還是一般變數,
在function內對s1和s2進行設定,x和y是會被改變的。
"&"如果出現在變數左邊,那就是取址,
例如 int *a = &c,&將c的位址取出,然後丟到指標a去儲存,
功能和上面reference用途完全不同
2.再來看"*":
"*"如果出現在宣告,就是代表指標,
例如 int *a = &c,便是宣告一個int指標變數a,用來指向c的位置。
"*"如果出現在變數左邊,那就是取值,
一樣是 int *a = &c 舉例,當指標a指向c之後,想要把c的值取出時,
可以這麼做,宣告一個int變數x,
int x = *a,那麼a就會將剛剛所指向的位址(c的位址)內所儲存的值給取出,
再丟給x。
延伸閱讀:C++ *&用法 , *與&同時使用
參考資料:
沒有留言:
張貼留言