C 如何编写接收两个指针作为参数的函数?

C 如何编写接收两个指针作为参数的函数?,c,function,pointers,C,Function,Pointers,如何编写接收两个INT类型指针作为参数的函数?函数从用户处读取两个整数,并将它们存储在参数中。然后计算整数之和并返回结果 下面是我写的代码。它真的很糟糕,包含了很多错误 ''' #包括 //功能原型 整数和(整数*第一,整数*第二); //函数定义 整数和(整数*第一,整数*第二) { int sum2; *第一个=&p; *第二个=&q; sum2=第一+第二; printf(“两个数字之和为%d”,sum2); 返回; } void main() { INTP; int-q; printf

如何编写接收两个INT类型指针作为参数的函数?函数从用户处读取两个整数,并将它们存储在参数中。然后计算整数之和并返回结果

下面是我写的代码。它真的很糟糕,包含了很多错误

'''

#包括
//功能原型
整数和(整数*第一,整数*第二);
//函数定义
整数和(整数*第一,整数*第二)
{
int sum2;
*第一个=&p;
*第二个=&q;
sum2=第一+第二;
printf(“两个数字之和为%d”,sum2);
返回;
} 
void main()
{
INTP;
int-q;
printf(“输入两个数字二加”);
scanf(“%d%d”、&p和&q);
总和(p&p和q);
}

''

您的函数已经接受指针
第一个
第二个
中变量
p
q
的地址,因此您只能使用这些指针访问变量:

int sum(int *first, int *second) {
    int sum2;
    // de-reference the first and second pointers to get the values
    sum2 = *first + *second;
    printf("sum of the 2 numbers is %d.\n", sum2);
    // you declared your function as 'int sum(int *, int *)', so return an int, it's not declared as 'void f(int *, int *)'
    return sum2;
}
另外,delcare
main
作为
int main()


阅读C编译器的文档(例如,将其作为
gcc-Wall-Wextra-g
..)和调试器的文档(例如,
*first=&p为什么会这样
first
已包含
p
的地址。还要注意,
sum()
不会返回任何值!这个答案真的很有帮助。但是你能解释为什么我不能在我的主要功能中使用void吗?我读过这个线程,但并不真正理解其中的原因。您需要使用main方法返回一个整数代码,如0、1或-1,以指示执行结果;0表示成功;非零表示-1表示程序退出失败或异常,等等,您不返回任何内容,因此不知道程序是如何执行的,C标准建议也使用
intmain
int sum(int *first, int *second) {
    int sum2;
    // de-reference the first and second pointers to get the values
    sum2 = *first + *second;
    printf("sum of the 2 numbers is %d.\n", sum2);
    // you declared your function as 'int sum(int *, int *)', so return an int, it's not declared as 'void f(int *, int *)'
    return sum2;
}
int main() {
    // your code
    int sum_result = sum(&p, &q);
    return 0;
}