#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);
}
例如这题,
里面的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指针