引用函数求两个数的和,差。
想用指针但却最后答案显示不出来,为啥啊
#include
float haha(float a,float b,float *c,float*d)
{
*c=a+b,*d=a-b;
}
int main()
{
float a,b,*c,*d;
scanf("%f %f",&a,&b);
haha(a,b,c,d);
printf("%.0f %.0f",*c,*d);
return 0;
}
无结果岂可修
自己找到正确答案怎么做,就是想知道自己的做法为什么错了
其他那两个答案没有说到问题的本质。。。
你想做的,是往函数中传递两个指针,然后用两个指针来传递返回值(这种情况下haha函数的返回值类型需要设为void)。
要达到这么一个目的,你需要在调用haha函数的函数里面(也就是main函数里)定义两个类型为float的变量,他们将接受函数的返回值;
在调用haha函数的时候,后两个指针参数需要传递刚刚那两个变量的地址,这样才可以在haha函数里对main中的那两个变量进行修改;
而你做的,是直接声明两个指针变量并传递他们。然而这两个指针变量的值是空的(或不能确定的),他们并没有指向任何有效的内存空间,所以对他们的解引用和赋值是未确定行为(undefined behaviour)。
指针是指向一个对象A的对象,也就是告诉你对象A在哪里。
函数是能够实现一定功能的代码的集合,也就是你通过调用这个函数就可以实现你想要的功能。
你都没理解指针和地址吧。现在你这个定义都是乱的。
函数里是*c,*d,main程序里是&c,&d呀。
正确代码:
#include<stdio.h>
float haha(float a,float b,float *c,float*d)
{
*c=a+b,*d=a-b;
}
int main()
{
float a,b,c,d;
scanf("%f %f",&a,&b);
haha(a,b,&c,&d);
printf("%.0f %.0f",c,d);
return 0;
}
望采纳