我为我的编程课编写了两个类似的程序。我已经分享了两个程序的代码,因为它们本质上是相似的,并且在最后一行上都有return0的编译器问题;对于第一个代码字符串,我收到的错误是“预期声明”和“语法错误:'返回'”。对于第二个代码,我收到错误“返回值类型与函数类型不匹配”和“'display':'void'函数返回一个值。我删除并在两个代码的不同部分添加{}并尝试重新排列代码。提前感谢您的帮助。
代码1
#include "stdafx.h"
#define nums 7
void display(int *);
int main()
{
int channels[nums] = { 2,4,5,7,9,11,14 };
printf("Channels: ");
display(channels);
}
void display(int *channels)
{
int i;
for (i = 0; i < nums; i++);
{
printf("%d", *(channels + i));
}
}
return 0;
代码2
#include "stdafx.h"
#define nums 7
void display(int *);
int main()
{
int channels[nums] = { 2,4,5,7,9,11,13 };
printf("channels: ");
display(channels);
}
void display(int *channels)
{
int i;
for (i = 0; i < nums; i++)
{
printf("%d", *channels);
*channels++;
}
return 0;
}
答案 0 :(得分:1)
返回值始终与函数关联。例如,如果函数总计2个整数并返回整数之和,它将类似于:
int sum( int a, int b ){
return a + b;
}
在这里看,函数的返回类型是int
,它返回的内容也是int
,因为添加两个整数会得到一个整数。它就像2匹马+ 3匹马= 5匹马。你不能做2匹马+ 3狮子= 5芒果。我希望你得到返回值和类型。
现在在代码1中,错误是您将return 0;
语句放在main()
函数之外。程序无法检测与此return
语句关联的函数。要解决此问题,请在致电return
函数 INSIDE display()
函数后,在下一行中移动main()
语句。
同样,在代码2中,将return
语句从display()
函数移动到main()
函数,就像在前一种情况下一样。这是因为void
期望不返回任何内容,但是您返回一个整数。这就像给一个百万富翁一个休息时说他不需要一个,他肯定会感到沮丧!
希望有所帮助。