YCH98 2018-12-05 16:33 采纳率: 0%
浏览 1584
已采纳

C语言函数不能返回局部变量或者形参的地址?为什么

#include
int func(int x,int y,int z) /返回地址值的函数*/
{ int max;
if(x>=y&&x>=z) return(&x);
if(y>=x&&y>=z) return(&y);
return(&z);
}
main()
{ int a,b,c,*p;
printf("\nPlease input a,b,c:\n");
scanf("%d%d%d\n",&a,&b,&c);
p=func(a,b,c);
printf("a=%d,b=%d,c=%d,*p=%d\n",a,b,c,*p);
}

例如这题,


  • 写回答

1条回答 默认 最新

  • tonglingzi 2018-12-05 17:44
    关注

    里面的x,y,z作为形参,在函数调用完之后就释放掉了,直接返回这几个形参的地址,返回的指针就指向未知地址;
    int func(int x,int y,int z)
    { int max;
    if(x>=y&&x>=z) return(&x);
    if(y>=x&&y>=z) return(&y);
    return(&z);
    }
    C语言函数不能返回局部变量或者形参的地址?
    1、回答:里面的x,y,z作为形参,在函数调用完之后就释放掉了,直接返回这几个形参的地址,返回的指针就指向未知地址。
    2、你这个函数写的也有问题,你这个函数是要返回一个int类型变量,可是你return的都是地址,编译应该会报警或者直接报错才对吧。
    3、你想要返回多个参数结果的话,你形参可以使用指针嘛,类似int func(int *x, int *y, int *z);
    楼主需要补习下c指针

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 6月5日

悬赏问题

  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败
  • ¥15 基于面向对象的图书馆借阅管理系统
  • ¥15 opencv图像处理,需要四个处理结果图