C 語言之引數傳遞

2021-06-22 17:56:49 字數 861 閱讀 9787

非引用傳遞:

答:當用實參副本初始化形參時,函式並沒有訪問呼叫所傳遞的實參本身,因此不會修改實參的值。

指標形參:

答:與其他非引

用型別的形參一樣,該類形參的任何改變也僅作用於區域性副本。

例如:void reset(int *ip) 

313 

呼叫 reset 後,實參依然保持原來的值,但它所指向的物件的值將變為 0: 

int i = 42; 

int *p = &i; 

cout << "i: " << *p << '\n';   // prints i: 42 

reset(p);                      // changes *p but not p 

cout << "i: " << *p << endl;   // ok: prints i: 0

引用引數:

答:引用形參直接關聯到其所繫結的實參。

void swap(int &v1, int &v2)  

複製實參副本會帶來什麼問題?

答:當實參物件較大時,效率會很低;所以會選擇用加const的引用引數。

含有可變形參的函式:

答:省略符形參有下列兩種形式:

void foo(parm_list, ...); 

void foo(...);

為什麼有些函式的返回型別是void,卻要用return?

答:因為返回型別是 void 的函式使用 return 語句是為了引起函式的強制結束。 如:

// ok: swap acts on references to its arguments 

void swap(int &v1, int &v2) 

C語言之引數傳遞

學了四年的計算機,一直讓自己比較苦惱的問題是c語言的引數傳遞問題,之所以說是苦惱,是因為在某年的乙個學期,不幸接觸到資料結構,光乙個鍊錶就把自己弄得死去活來的,而且自已一直就楞以為在操作的過程中,傳遞引數的指標也在發生變化,結果可想而知,資料結構成了自己專業課裡面險些掛彩的一門課程。直至最近,拿出資...

c語言之可變引數

define align n sizeof n 3 0xfffffffc 記憶體對齊 define va start ap,v ap char v align v 根據第乙個引數的首位址和型別以及記憶體對齊規則確定第乙個可變引數的位址 define va arg ap,t t ap align t ...

C語言引數傳遞

c 語言引數傳遞方式有傳值和傳位址兩種方式。1 傳值方式 原理 形參和實參佔不同記憶體單元,傳遞的實際上是實參變數或表示式的乙個拷貝副本,將這個副本值傳給形參,形參記憶體單元內容儲存的正是這個副本值,相當於給形參進行初始化,形參的值發生變化也不會傳回給實參,因此是單向傳遞。例如 void incre...