为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2021-01-18 18:14:51
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个字符空间呢?谢谢!
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

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

查看完整回答
反对 回复 2021-03-28
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

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

查看完整回答
反对 回复 2021-03-28
  • 2 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信