C/C++函數中數組傳參

void f(char s[]){
    cout<<sizeof(s)<<","<<strlen(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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章