【C语言】自己算的和答案和电脑运行的不太一样,有点不理解

1.我自己写出来是1,答案是1244996,电脑运行是之后答案是6487572,不知道是书上答案是对的还是电脑运行有问题,有点不太理解了。

#include
#include
void fun(int p1,int *p2,int *s)
{ s=(int
)malloc(sizeof(int));
*s=*p1+*p2;
free(s);
}
int main()
{
int a=1,b=40,*q=&a;
fun(&a,&b,q);
printf("%d",q);
return 0;
}

你贴的代码里有的地方 * 忘加了可能,结果是1 , 我运行的也是1,因为在整个过程中,a地址的值没变,所以最后还是1

#include<stdio.h>
#include<stdlib.h>

void fun(int *p1,int *p2,int *s)
{
    s = (int *)malloc(sizeof(int));
    *s = *p1 + *p2;
    free(s);
}

int main()
{
    int a=1,b=40,*q=&a;
    fun(&a,&b,q);
    printf("%d", *q);
    return 0;
}