这个奇怪的函数定义意味着什么?

时间:2014-03-21 06:54:46

标签: c function

我在a blog post中看到了这个C程序:

main()
{
    int n;
    n = 151;
    f(n);
}

f(x)
int x;
{
    printf("%d.\n", x);
}

这篇文章没有解释。任何人都可以解释这个奇怪的函数定义意味着什么吗?

5 个答案:

答案 0 :(得分:10)

这是K& R风格的C代码,它仍然是有效的C语法,但我建议你不要在新编写的代码中使用它。

f(x)
int x;

等同于ANSI C:

void f(int x)

K&R C是Brian Kernighan和Dennis Ritchie在本书第一版C programming language中描述的C语言,并以两位作者的名字命名。本书的第二版更新为使用ANSI C。

答案 1 :(得分:6)

f(x)
int x;
{
    printf("%d.\n", x);
}

是一种定义函数的旧方法。现在它可以读作

void f(int x)
{
    printf("%d.\n", x);
}

答案 2 :(得分:1)

这段代码很糟糕。

  1. 过时的函数声明f()
  2. f()
  3. 之前应该有main()的前瞻性声明
  4. f()
  5. 缺少返回类型

答案 3 :(得分:0)

请更改您的学习资源!

这是一种非常古老的C风格(K& R C)。

f(x)

int x;
{}

相当于

void f(int x)
{}

你真的不应该浪费时间去学习它。

寻找教授ANSI C C89 / C90的资料,并注意C99的新功能(许多编译器都没有广泛采用,所以要知道差异)

答案 4 :(得分:-2)

这是一种非常古老的编码风格。这在ANSI中不起作用。 更好地使用像

这样的东西
void f(int x)
{
 ... ... ...;/*Whatever is required*/
}