刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

阅读以下说明、C函数和问题,将解答写入答题纸的对应栏内。

【说明1】

函数test fl (int m,int n)对整数m、n进行某种运算后返回一个整数值。

【C函数1】

int test_fl (int m, int n)

{   int k;

    k=m>n?m:n;

    for(;(k%m!=0)||(k%n!=0);k++);

    return k;

{问题3:函数test_f3()的返回值处理缺陷及修改方法}

使用微信搜索喵呜刷题,轻松应对考试!

答案:

字符数组tstr存储在系统的栈区,当函数运行结束后tstr的空间会被释放掉,这时使用语句return tstr会产生错误。可以使用动态分配内存的方式如char *tstr = calloc(strlen(s),sizeof(char))进行修改。

解析:

函数test_f3()中的字符数组tstr在函数内部定义,其存储空间位于栈区。当函数test_f3()执行完毕后,栈区中的内存会被自动释放,因此返回的指向tstr的指针指向的内存空间可能已经被释放或是不稳定的,这样会导致程序出现错误。为了避免这种情况,可以使用动态内存分配的方式为tstr分配内存。使用calloc或malloc函数可以在堆区分配内存,这样分配的内存空间不会因为函数的结束而被自动释放,只有在程序员显式调用free函数时才会释放该内存空间。因此,修改后的代码可以使用动态内存分配的方式来处理返回的字符串。

创作类型:
原创

本文链接:{问题3:函数test_f3()的返回值处理缺陷及修改方法}

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share