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