Closed. This question is off-topic. It is not currently accepting answers. Learn more。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
6年前关闭。
我试图从函数返回数组。为什么不起作用?
在for循环中实现了数组。
我用几种不同的语言编写代码,所以我不确定这是否真的是个问题,但是您的
此外,在
然后是你的
最后,如果
然后您所要做的就是从main调用
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
6年前关闭。
int m[1000]; //declaring global array
int added(int input){
for(int i=1;i<= input; i++){
if(i>0 && input % 2) // checking if the numbers are even...
m[i]= input; //array implementation
return m[i];
}
}
int main()
{
for(int j=2;j<54;j++){
printf("%d",m[i]);
putchar('\n');
}
return 0;
}
我试图从函数返回数组。为什么不起作用?
在for循环中实现了数组。
最佳答案
您的main
函数对一个名为for loop
的变量进行了j
迭代,但循环的主体试图使用一个名为i
的未定义变量。
您的main
函数甚至从不调用您的added()
函数。
而且,您的added()
函数也有点问题。
int added(int input){
for(int i=1;i<= input; i++){
if(i>0 && input % 2) // checking if the numbers are even...
m[i]= input; //array implementation
return m[i];
}
}
我用几种不同的语言编写代码,所以我不确定这是否真的是个问题,但是您的
return
语句在for loop
中。在许多语言中,这不会编译,因为added()
函数没有针对每个可能的执行路径的return
语句。如果发送added()
参数<1
,会发生什么情况?added(0)
或任何负的int
都不会进入for
循环,因此added()
在没有return statement
的情况下到达函数的末尾。此外,在
return
内和for loop
外的if
语句中,保证只返回第一个for
循环的结果,因此您也可以只执行嵌套的if
语句或其他操作。然后是你的
if
声明。if(i>0 && input % 2)
。&&
返回true
时,两半也返回true
(这是执行if
语句的唯一时间)。在这种情况下,i>0
每次true
是非零正整数时都返回i
。没问题。同时,input % 2
不返回布尔值。它将返回int
,在本例中,它将返回0
或1
。偶数返回0
,奇数返回1
。结果是,这里的整数0
被计算为boolean false
,而非零整数被计算为boolean true
,所以这可能与您想要的相反。您可能需要将input % 2
更改为((input % 2) == 0)
。最后,如果
m[]
是全局声明的,那么实际上不需要return
任何东西。main()
和added()
都能很好地看到变量。您可以将函数修改为如下所示:void added(int input){
for(int i=1;i<= input; i++){
if(/*i will always be >0 in this for loop*/(input % 2) == 0)
m[i]= input;
}
return;
}
然后您所要做的就是从main调用
added()
,它将正确地修改数组。关于c - 谁能帮助我了解这段代码有什么问题? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19496592/
10-12 12:28