Re: [語法] about "&"

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間18年前 (2006/05/03 19:10), 編輯推噓4(403)
留言7則, 3人參與, 最新討論串1/2 (看更多)
※ 引述《okwan (okwan)》之銘言: : : reference得限制比指標多不像指標彈性那麼大~~~ : : 他是很專情的指到哪個人就不能換了~~~ : : 指標的話是可以亂指的~~~喜歡哪個人就指它~~ : : 它比指標單純沒指標那麼複雜~~ : : 應該就是這樣@@"~~~ : 對不起,這樣的解釋有一些不清楚. : C++裡的指標與Reference是完全不一樣的東西. : Reference沒有指向誰的問題,因為它只是一個變數的"別名".指標才有"指"到某一個位置. 你們的意思應該是一樣的吧 在同一個 scope 中 reference 的確就是個別名 但 reference 本身的確是用 pointer 來實作的 以這個例子來說 void foo(const string& str) { // ... } void bar() { foo("hello world"); } 這是合法的 但在 foo 裡面 宣告為 refernece 的 str 是誰的別名呢? 事實上這邊 compiler 會在呼叫 foo() 的地方產生一個 string 暫時變數 然後讓 str 成為暫時變數的別名 不過這個暫時變數本來就沒有名字了 用「別名」反而很奇怪 倒不如說 str 指向一個暫時變數 而你在使用 str 時 compiler 會自動幫你 dereference 實際上 bar() 在呼叫 foo() 時 的確是把暫時變數的位址傳給 foo() 甚至如果你霸王硬上弓 也可以讓 reference 指向 NULL: string& str = *(string*)NULL; 當然這麼做一點好處也沒有 我只是在說明 reference 其實本身就是 pointer 只是使用的語法不同罷了 : 一堆人的履歷都寫會C++, 我每次都問應徵者CALL BY VALUE, CALL BY ADDRESS, : 與CALL BY REFERENCE是怎麼運作, 結果有七成的人都講不出來. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.3.35

05/03 20:00, , 1F
關於reference是不是指標的問題~~~
05/03 20:00, 1F

05/03 20:00, , 2F
看本是說A reference is an implicit pointer that is
05/03 20:00, 2F

05/03 20:01, , 3F
automatically deference~照課本說他應該是pointer
05/03 20:01, 3F

05/03 20:04, , 4F
但是跟pointer又不一樣~okwan大大跟我說reference
05/03 20:04, 4F

05/03 20:07, , 5F
沒有指向誰的問題~跟課本講得矛盾到~這讓我很困惑~~
05/03 20:07, 5F

05/03 23:52, , 6F
我會比較贊同課本的說法
05/03 23:52, 6F

05/04 08:34, , 7F
但是課本也會提醒,reference不可以當成pointer來使用
05/04 08:34, 7F
文章代碼(AID): #14M8-WoL (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
1
3
完整討論串 (本文為第 1 之 2 篇):
1
3
文章代碼(AID): #14M8-WoL (C_and_CPP)