考虑一下,
#include<stdio.h>
int main()
{
int y = facto(6);
printf("%d",y);
return 0;
}
int facto(int x)
{
if(x==1)
return 1;
else
return x*facto(x-1);
}
我在一些文章中读到,在定义函数之前调用它是一个隐式声明。这里的这个声明(“y=facte(6)”)是一个隐式声明吗?
在Ubuntu 64位上使用GCC 4.8.1。
最佳答案
y=facto(6)
是一个隐式声明,因为您告诉编译器“我想调用一个函数并传递一个int,所以在未来的某个地方会有一个带有一个int参数的函数。”
如果编译器首先遇到int facto(int x)
,那么这就是显式声明。
隐式声明是危险的,因为编译器不会说“嘿,这与我已经找到的函数不匹配。”
关于c - 第一个函数调用分配一个变量。隐式声明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22897778/