指针和函数到底什么鬼

问题遇到的现象和发生背景

引用函数求两个数的和,差。

遇到的现象和发生背景,请写出第一个错误信息

想用指针但却最后答案显示不出来,为啥啊

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#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;
}


运行结果及详细报错内容

无结果岂可修

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

自己找到正确答案怎么做,就是想知道自己的做法为什么错了

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

其他那两个答案没有说到问题的本质。。。
你想做的,是往函数中传递两个指针,然后用两个指针来传递返回值(这种情况下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;
}

望采纳