voidf(
char s)
char str=
"hello world"
;cout<<
sizeof
(str)
<<
","<<
strlen
(str)
<<
",";
f(str)
;
以上**在32位平台上輸出為()?
12, 11, 4, 11
原因:在c/c++裡陣列作為引數時傳遞的實際上是指向陣列第乙個元素的指標,因此sizeof(str)返回的是指標的大小,即4。
12是因為在最後還新增了乙個\0,所以是11+1=12。
//以下三個是等效的
void
fun(
char str[10]
);void
fun(
char str)
;void
fun(
char
*str)
;
因為傳遞的本質上是指標,所以以下呼叫是完全合法的:
void
fun(
char str[
100]);
char ch[10]
;fun
(ch)
;
C C 陣列傳參
託管c 可以將陣列作為輸入 輸出引數。clr封裝c 託管介面時,可以使用cli array 作為輸入引數,而且c 可以獲取到c 修改後的陣列內容。array陣列原型 qualifiers cli array qualifiers type dimension var 我們只關注下模板引數 type ...
c c 陣列傳參
在c c 中,在進行陣列傳參時,陣列的元素個數預設是不作為實參傳入呼叫函式,也就是說c c 不允許向函式傳遞乙個完整的陣列作為引數 例項 1.形式引數是乙個指標,實參包括陣列長度 1 void myfunction int param,int length 6 2.形式引數是乙個已定義大小的陣列 1...
函式傳參問題(C C )
這兩天做日曆系統小專案,發現了乙個很關鍵的問題 函式傳參問題。1 傳值呼叫和傳址呼叫 swap函式為例 傳值呼叫現象 x和y作為實參,在進入函式的時候是只拷貝了乙份自己的副本 副本具有和自己一樣的值,但是變數 不同。所以我們在子函式swap中交換的實際是副本而不是x,y的真身。所以在swap內部確實...