[問題] 一個關於*&的用法

看板C_and_CPP作者 (shayne)時間13年前 (2010/10/08 15:25), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/2 (看更多)
想請問一下同下的範例:(已測試於vc裡可編譯) --------------------------------- void function(char*& var){ var = new char[10]; } int main(){ char *var1; function(var1); printf("%c",var1[0]); } ------------------------------------ 這是我從網路上找來的程式簡化版 可是我一直看不懂function的var接收方式.. 這樣接收到的指標可以接受new, 母程式丟值方便,又可以接收子程式new出來的矩陣... 我沒細究這用法,但最近程式常常記意體出錯 想問一下這用法安全嗎?是怎麼運作的?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.131.19

10/08 15:27, , 1F
不安全,傳參考,私底下是把varl_main這個區域變數的位址
10/08 15:27, 1F

10/08 15:28, , 2F
傳過去,然後在function裡面去寫入main的變數,應該是這樣
10/08 15:28, 2F

10/08 15:28, , 3F
我沒查證
10/08 15:28, 3F

10/08 15:46, , 4F
位址應該是有被傳過去,但一般傳遞位址使用時
10/08 15:46, 4F

10/08 15:48, , 5F
丟入值為&var1子程式使用*var來使用變數
10/08 15:48, 5F

10/08 15:49, , 6F
但這裡都不需要,所以應該是*&那做了什麼手腳才是..
10/08 15:49, 6F

10/08 15:57, , 7F
剛沒考慮仔細,從這例子,安全性是沒問題才對,抱歉
10/08 15:57, 7F
文章代碼(AID): #1ChiTl0H (C_and_CPP)
文章代碼(AID): #1ChiTl0H (C_and_CPP)