gpt4 book ai didi

c - C 中的函数声明

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:14 24 4
gpt4 key购买 nike

我正在学习 C,想知道是否可以用函数声明替换函数调用......就像下面的程序一样

main() {
void show();
getch();
}

void show() {
clrscr();
printf("Tendulkar is best batsman ever");
}

这里主要是声明 show 函数并且不在任何地方调用它,但仍然

printf("Tendulkar is best batsman ever");

正在执行。为什么会这样??

当我在 Turbo C++ 上运行下面的程序时,还有一件事给我错误,但在 gcc 上它工作正常

main()
{
show();

}
void show()
{

printf("Tendulkar is best batsman ever");
}

预计

回答:

编译器错误:重新声明显示时类型不匹配。

解释:

当编译器看到函数显示时,它对它一无所知。因此默认的返回类型(即 int)是假定的。但是当编译器看到 show mismatch 的实际定义时,因为它被声明为 void。因此错误。

最佳答案

您展示的程序无法编译。我和我的编译器都不知道 clrscr() 是什么,如果我没记错的话,getch() 是一个在 conio.h 中定义的旧 MS-DOS 函数,它至少有 20 年没有包含在 C 编译器中了。如果你正试图从一本书中学习 C,请扔掉它并获得一本新的。您会找到建议的图书 list here .

即使解决了这个问题并删除了所有未定义的函数,我们最终还是得到了以下程序的小精华:

int main()
{
void show();

return 0;
}

void show()
{
printf("Tendulkar is best batsman ever");
}

它编译得很好,但什么也没做。 See for yourself .该程序不输出任何内容。

您应该在使用函数之前定义函数,调用函数与定义函数不同。您不能将两者混为一谈,如果您这样做,您的程序保留不按预期工作的权利。您可以在 C 的方法中定义一个函数(尽管它被认为是非常糟糕的风格),但这不会调用该方法。函数调用不包括返回类型。同样,任何有关 C 编程的好书都会比 Stack Overflow 上的一些答案更好地告诉您这一点。

只是为了比较,正确编写的示例看起来像这样:

#include <stdio.h>

void show(); // forward declaration of the show function

int main()
{
show(); // call the show function
return 0;
}

void show() // definition of the show function
{
printf("Tendulkar is best batsman ever");
}

关于c - C 中的函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com