使用指针调用函数

-4 c pointers compiler-errors function

任何人都可以解释我为什么会收到错误

无法将int**转换为argument1的int*

我已经看到所有堆栈溢出的答案,但没有找到解决我的问题的方法.我的代码

#include<stdio.h>

int* sum(int,int*);

int main()
{
    int a=5;
    int *b;

    *b=6;
    int *res;

    res=sum(a,&b);
    printf("\n%d\n%d\n",a,*b);
    printf("%d",*res);
}

int* sum(int x,int *y)
{
    x=x+1;
    *y=*y+3;
    return (&y);
}
Run Code Online (Sandbox Code Playgroud)

这是一个基本问题,但我发现很难解决错误.

Sou*_*nta 5

RES =总和(A,和b);

这里b已经是一个指针(一个未分配的整数指针,可能导致未定义的行为).So&b的类型为int**.所以只通过b.

res(a,b);
Run Code Online (Sandbox Code Playgroud)

之后返回&y也是int**类型,如果要返回地址,则将其更改为y(类型为int*).

return y;
Run Code Online (Sandbox Code Playgroud)