Hydracode 2016-12-28 09:35 采纳率: 0%
浏览 2325

c语言返回值类型有哪些?

C语言中函数能否以指针数组或者数组指针作为返回值返回至主函数

  • 写回答

4条回答 默认 最新

  • 艾尔森 2016-12-28 10:04
    关注

    是可以的 但是如果返回的指针指向的是局部变量的话可能就会出现一些问题

     int *test()
    {
        int a[10];
        for(int i=0; i<10; i++) a[i] = i;
        return a;
    }
    
    
    int main()
    {
        int *p = test();
        for(int i=0; i<10; i++) printf("%d\n,p[i]);
    }
    
    

    向上面这个输出的结果就不会是0123456789,因为局部变量的生命周期到函数作用完后,在返回主函数时局部变量(例中的a[])被释放掉了 所以其实这时的p还是一个野指针

    int *test(int *a)
    {
        for(int i=0; i<10; i++)
        {
            a[i] = i;
        }
        return a;
    }
    int main()
    {
        int a[10];
        int *p = test(a);
        for(int i=0; i<10; i++) cout<<p[i]<<endl;
    }
    
    
    

    但是如果像这样就会如愿输出0123456789,不过如果是C++的话实现上面这种情况比较推荐使用引用

    评论

报告相同问题?

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛