传入函数的char字符数组大小?

void gettime(char tmp[]) {
printf("sizeof(tmp)2=[%d]\n", sizeof(tmp));
}
main() {
...
char tmp[10];
printf("sizeof(tmp)1=[%d]\n", sizeof(tmp));
gettime(tmp);
}

为什么sizeof(tmp)1打印10,sizeof(tmp)2打印4呢?那如何让gettime中传入的tmp字符串也是10个字符空间呢?谢谢!

开满天机
浏览 323回答 2
2回答

慕娘9325324

数组作为参数传递时,会退化为指针,所以是无法通过这种方式在函数中来获取数组大小,必须另外再加一个参数来传递数组的大小,即函数原型改为void gettime(char tmp[], int len)

繁花不似锦

C语言里面的规定,函数的参数是数组时是按照指针传递的,也就是不论你传的tmp里面有多少个char,函数内的sizeof结果都是4,也就是那个指针的大小,建议你这样传参时最好再加个大小的参数,例如:void gettime(char tmp[],int nCount)
打开App,查看更多内容
随时随地看视频慕课网APP