C 陣列引用傳遞與指標傳遞

2021-07-09 03:26:45 字數 1101 閱讀 8452

#include #include #include using namespace std;

class sourcefile

}explicit sourcefile(const char* filename)

: data_(filename)

const char* data_;

int size_;

};int main(int args, char **argv)

g++編譯後生成執行檔案a.out 

[le@localhost refarrandpoint]$ nm ./a.out | grep sourcefile

0000000000400b20 w _zn10sourcefilec1epkc

0000000000400b9c w _zn10sourcefilec1ili10eeerat__kc

0000000000400c2c w _zn10sourcefilec1ili20eeerat__kc

0000000000400b20 w _zn10sourcefilec2epkc

0000000000400b9c w _zn10sourcefilec2ili10eeerat__kc

0000000000400c2c w _zn10sourcefilec2ili20eeerat__kc

編譯器為我們生成了三個建構函式,兩個是函式模板的

[le@localhost refarrandpoint]$ ./a.out 

consturct ref

consturct point  //  sourcefile s2(arr2) 呼叫的是傳指標的建構函式,說明陣列預設是用指標傳遞,而不是引用傳遞

consturct ref

consturct point

如果 指標傳遞的建構函式,沒有用explicit。。那輸出都是 consturct point

總結:陣列預設是用指標傳遞,而不是引用傳遞,想要引用傳遞,要麼就不能有傳指標的建構函式,要麼就要像上面一樣用explicit分開出來(好像有點麻煩)

引用傳遞與指標傳遞

1.指標傳遞 指標傳遞本質上是值傳遞,它所傳遞的是乙個位址值。值傳遞的特點 被調函式對形式引數的任何操作都是作為區域性變數進行的,不會影響主調函式的實參變數的值。2.引用傳遞 引用傳遞中,區域性變數棧空間中存放的是由主調函式放進來的實參變數的位址。被調函式對形參的任何操作都被處理成間接定址,即通過棧...

c 值傳遞 指標傳遞 引用傳遞

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作 引...

C 值傳遞 指標傳遞 引用傳遞詳解

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作.引...