[英]Calling a function within a fork, within the function is a while loop which should be reading input, however, scanf() is completely skipped
[英]Calling a function within a loop
我正在尝试一个简单的加法函数,该函数将从数组an中获取数字x
并向其中添加变量i
,这是for循环内的迭代变量。 而不是单独添加每个变量并产生以下输出:
3 2 3
它产生的价值
3 5 5
#include <stdio.h>
int add(int x[], int y);
int main(void) {
int i;
int a[3] = {3, 1, 5};
for(i=0; i<3; i++)
{
printf("%d \t", i);
printf("%d, %d, equals %d \n", a[i], i, add(a[i], i));
}
return 0;
}
int add(int x[], int y){
return x+y;
}
尝试
int add(int x, int y){
return x+y;
}
在您的函数定义中
int add(int x[], int y){
int x[]
期望将数组作为参数传递。 通过与
add(a[i], i)
您犯了多个错误,例如
int *
地方传递int
值,因此从int
到int *
的错误和隐式转换正在讨论中。 add()
内部, x
的类型为int *
。 因此,通过说return x+y;
,本质上又是在(错误地)将指针转换为int
类型。 似乎在这里,您只需要一个int
变量。 不是数组。 将其(声明和定义)更改为
int add(int x, int y){
建议:调出编译器警告并留意它们。 例如,启用-Wall
选项,您将收到一条警告,说
警告:传递'add'的参数1会使指针从整数开始而无需强制转换
printf("%d, %d, equals %d \\n", a[i], i, add(a[i], i)); ^
和
预期为
int *
但参数为int
类型int add(int x[], int y);
和,
警告:return从指针转换为整数而不进行强制转换
return x+y; ^
您正在使用数组作为参数。 请尝试以下代码:
#include <stdio.h>
int add(int x, int y);
int main(void) {
int i;
int a[3] = {3, 1, 5};
for(i=0; i<3; i++)
{
printf("%d \t", i);
printf("%d, %d, equals %d \n", a[i], i, add(a[i], i));
}
return 0;
}
int add(int x, int y){
return x+y;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.