据我所知,我们无法在另一个函数中声明一个函数。但我们可以在另一个函数中调用一个函数。
在main函数中,我们通常调用这样的函数:
int abc(int some)
{
return x;
}
int main()
{
int x = 10;
abc(x); //calling function abc inside main function.
return 0;
}
但是今天在查看示例代码时我看到了类似的内容:
int main()
{
int abc(int x); // which compiled fine
}
哪个有效,但我在这里试图理解的只是这些陈述的用途是什么?
答案 0 :(得分:4)
这是一个范围问题。您可以在main中声明函数的原型。问题是它只能在主要内部调用,而不是在其他地方调用。并且函数的实际代码将在main method
之外。
所以在你的第二个例子中,int abc(int x);
里面的 main
,函数abc
只能在main函数内调用。
答案 1 :(得分:1)
int abc(int x);
声明确实是一个函数原型。虽然我们无法在main函数中定义函数,但我们可以告诉编译器一个函数存在于另一个函数中,这就是原型所做的。
虽然你肯定可以在函数内部声明一个函数,但这样做的实用程序肯定是有限的:C中的所有外部函数都属于全局命名空间(尽管它们的可见性仅限于封闭原型声明的范围),因此通常不需要在函数内隐藏原型。