推 realshayne:恩恩 了解了 感謝! <(_ _)> 10/08 16:38
※ 引述《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