1.函式介紹
對於同樣功能的遞迴函式,分別用傳指標和傳值的方式進行引數傳遞,觀察這兩種傳參的方式對他們遞迴深度的影響。在用不同大小的字串、不同大小的棧空間分別進行測試。函式設定為死迴圈,讓函式無窮的遞迴,觀察函式在棧溢位崩潰時能遞迴的最大次數。下面的實驗中,分別讓函式傳遞乙個指標引數、乙個引用引數、乙個string引數。
2.實驗結果
限定棧空間下不同的引數傳遞方式能遞迴的深度(單位:遞迴次數)
字串長度
棧空間8192kb
棧空間1024kb
傳指標方式
傳引用方式
傳值方式
傳指標方式
傳引用方式
傳值方式
2000
327426
327351
218296
98050
98045
65268
20000
326689
326712
217951
97351
97404
64848
200000
321068
321214
214067
91703
91826
61208
3.結果分析
從表中看出:
(1)傳指標和傳引用基本沒有差別。
(2)用傳指標或引用的方式比用傳值的方式進行遞迴時,遞迴次數要多。傳指標和傳引用能遞迴的次數大概是傳值方式的1.5倍。
(3)無論是那種傳參方式,字串變大之後,遞迴次數都會略微減少,但是這種變化不是特別明顯。
4.更深入的分析:
(1)傳指標方式:
**:
//遞迴函式1:傳指標
void recursion_1(char* x)
str[i] = '\0';
return str;
}//遞迴函式1:傳指標
void recursion_1()
//遞迴函式2:傳引用
void recursion_2(string &x, string &y, string &z, string &t, string &p)
//遞迴函式3:傳值
void recursion_3(string x, string y, string z, string p)
int main()
Delphi 函式傳遞引數的不同方式
在delphi過程 函式中傳遞引數幾個修飾符為const var out。另一種不加修飾符的為預設按值傳遞引數。一 預設方式以值方式傳遞引數 procedure tform1.procnormal value string begin orignum value me lblreturn.capti...
Delphi 函式傳遞引數的不同方式
在delphi過程 函式中傳遞引數幾個修飾符為const var out。另一種不加修飾符的為預設按值傳遞引數。一 預設方式以值方式傳遞引數 procedure tform1.procnormal value string begin orignum value me lblreturn.capti...
函式引數傳遞的方式
按值傳遞 主調函式向呼叫函式傳遞引數實際上只是將實參的拷貝 即臨時副本 傳遞給了被呼叫函式,並不是實參本身,這樣被調函式不能直接修改主調函式中變數的值,而只能修改其私有的臨時副本的值。引用傳遞 對引用的操作等於對其指定的物件進行操作,當將實參傳遞給形參時,形參就指向了實參 指標傳遞 形參為指向實參位...