考虑一下,

    #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/

10-12 04:24
查看更多