首页 新闻 会员 周边

C语言麻烦帮我看下这个题怎么做的呗,谢谢各位了

0
[待解决问题]

鲸鱼yux的主页 鲸鱼yux | 菜鸟二级 | 园豆:202
提问于:2022-10-14 22:09
< >
分享
所有回答(4)
0

printf("len of b is %d\n",sizeof(b));

Fanshengchen | 园豆:202 (菜鸟二级) | 2022-10-15 09:22
0

首先,这个程序很有问题,可以说是完全错误的。
如果一个函数要返回其局部变量的地址,使用它的数据这个行为是未定义的,是要明令禁止的。
如果非要说fun没问题的话(返回局部变量的地址乃是大忌),错就错在用了strlen,它是根据\0计算长度的,而你在赋值的过程中,压根没赋值过,所以长度是未定义的,但肯定是大于等于10。
sizeof也不行,因为b是字符指针,它不是字符数组,无法使用sizeof获取字符数组的真实大小,这个就陷入了死区。
总结一句:这个代码写除了函数/变量声明是对的,其他全是错误!

寂静的羽夏 | 园豆:1781 (小虾三级) | 2022-10-15 09:41
0

可以编译一下,然后把编译错误发给老师。

会长 | 园豆:12401 (专家六级) | 2022-10-15 10:37
0

提出问题比解决问题更重要。我的建议:
1、建议函数内部的数组定义为static修饰的静态变量,这样内存不会被释放。
2、同1,可以动态分配用stdlib库中的malloc和free,函数内用malloc申请,main函数最后用free释放
3、sizeof的使用,我倾向直接改成10或者改成sizeof(a)/sizeof(char),
4、strlen使用的,需要在字符数组中的一个元素的赋值改成'\0',即字符串末尾是‘\0'
5、用整型赋值给char类型会发生类型转换,我倾向同类型或显式类型转换
6、没看到头文件的使用,添加stdio和string后可以运行,结果我没看过。

tablong | 园豆:204 (菜鸟二级) | 2022-11-02 21:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册