两个类似的程序在最后一行都有错误

时间:2016-05-01 22:02:07

标签: c

我为我的编程课编写了两个类似的程序。我已经分享了两个程序的代码,因为它们本质上是相似的,并且在最后一行上都有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;
}

1 个答案:

答案 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期望不返回任何内容,但是您返回一个整数。这就像给一个百万富翁一个休息时说他不需要一个,他肯定会感到沮丧!

希望有所帮助。