看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《realshayne (shayne)》之銘言: : 想請問一下同下的範例:(已測試於vc裡可編譯) : --------------------------------- : void function(char*& var){ var 是一個 reference to char* : var = new char[10]; : } : int main(){ : char *var1; : function(var1); 傳 var1 ( 型態為 char* ) 過去 : printf("%c",var1[0]); : } : ------------------------------------ 今天如果是這樣 int foo; int& bar = foo; 這你一定懂對吧,就 bar 這個 reference 綁到 foo 上 那如果將 int 改成 char* char* var1; char*& var = var1; 這樣你就看出其實很簡單吧 把這概念拿到上面函數那裏去看,一模一樣的概念 函數裡面的 var 是一個 reference to char* ,會綁定到 var1 所以操作起來你就是他,這時候在裡面 new 當然外面的 var1 也是會更動到 : 這是我從網路上找來的程式簡化版 : 可是我一直看不懂function的var接收方式.. : 這樣接收到的指標可以接受new, : 母程式丟值方便,又可以接收子程式new出來的矩陣... : 我沒細究這用法,但最近程式常常記意體出錯 : 想問一下這用法安全嗎?是怎麼運作的?? 要注意 delete 的責任丟給了函數外部的使用者 還有要小心是不是真的想讓函數內的變數改變到外面的變數 這就是 C++ 才有的 pass by reference : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.168.127
realshayne:恩恩 了解了 感謝! <(_ _)> 10/08 16:38