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