C C 函式中陣列傳參

2021-10-04 05:46:03 字數 746 閱讀 2490

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內部確實...