Mic*_*eli 0 c arrays return function
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;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试从函数返回数组.为什么不工作?在for循环中实现了数组.
nhg*_*rif 11
你的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];
}
}
Run Code Online (Sandbox Code Playgroud)
我用几种不同的语言编写代码,所以我不确定这是否实际上是一个问题,但你的return陈述是在一个for loop.在许多语言中,这将无法编译,因为您的added()函数没有return针对每个可能的执行路径的语句.如果您发送added()参数会发生什么<1? added(0)或任何否定int将永远不会进入for循环,所以added()在没有a的情况下到达函数的末尾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;
}
Run Code Online (Sandbox Code Playgroud)
然后你所要做的就是added()从main 调用它会正确地修改数组.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |