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);