C语言函数 数组作为参数,,在函数里中无法计算传进来的数组长度求指教,
答案:3 悬赏:10 手机版
解决时间 2021-01-08 04:52
- 提问者网友:聂風
- 2021-01-07 14:28
C语言函数 数组作为参数,,在函数里中无法计算传进来的数组长度求指教,
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-01-07 15:37
整型数组作为参数传递时,无法在子函数获得其长度!
只有字符串可以,因为它有一个尾巴标识(‘\0’)!
所以,整型的数组长度,必须与数组名一同传递到子函数才可以!追问char b[15] = { 'a', 'b', 'c', 'e', 'a','a', 'b', 'c', 'e', '\0' }; 这个好像也不可以 求完整的解决方案追答你这个也有结束符啊,如果你能规定 一个特殊数值作为整数的结束符,则传整型数组也能做到。
只有字符串可以,因为它有一个尾巴标识(‘\0’)!
所以,整型的数组长度,必须与数组名一同传递到子函数才可以!追问char b[15] = { 'a', 'b', 'c', 'e', 'a','a', 'b', 'c', 'e', '\0' }; 这个好像也不可以 求完整的解决方案追答你这个也有结束符啊,如果你能规定 一个特殊数值作为整数的结束符,则传整型数组也能做到。
全部回答
- 1楼网友:慢性怪人
- 2021-01-07 17:58
如果你把参数改成char a[ ]就ojbk了,char *a中a是一个指针,sizeof得出的是4,因为指针类型就是大小4,而char a[ ]中a是一个静态数组,sizeof函数得到的是数组的容量5,这是sizeof这样定义的,而且sizeof求结构体的时候,又返回结构体的实际大小,你可能觉得疑惑,就请百度sizeof用法后再来想这个问题(建议对照strlen你会理解的更好),还有一个补充,sizeof是一个运算符不是函数哦。都写到这啦,再说点别的,善用结构体,深入理解指针,二重指针,数组,一定对你有帮助,因为操作系统(linux)就是c和汇编写的,数据结构与算法也主要考c的一些算法函数,学号c语音不容易,那些响当当的公司都是优先看你数据结构算法,数据库,操作系统等的功底,是不是扯远了。。。。点个赞呗第一次回复有点激动\(≧▽≦)/
- 2楼网友:舍身薄凉客
- 2021-01-07 16:56
你传入的是一个指针,并不是一个数组。这个指针的长度就是4。追问求一个解决方案啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯