什么是主(ac,av)int ac; char**av; {...}?

Ori*_*ski 3 c

可能重复:
C中有多少种写作功能?

我看到一个用C语言编写的程序,其定义如下main:

main(ac, av) int ac; char **av;
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

代替

int main(int argc, char **argc)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我从未在第一个代码中看到过C语法.它是什么,我在哪里可以阅读它?

Lev*_*von 7

第一个是旧式的ANSI前C函数头,之后函数原型成为编写代码的通用/标准方式.

经常格式如下:

main(ac, av) 
int ac; 
char **av;
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

在初始括号集之后看到的是参数的类型声明main.另请注意,未int声明返回类型.

没人真正写这样的代码,坚持第二种形式.

如果你可以通过Kernighan和Ritchie(第1版,ANSI之前的版本)挖掘原始白皮书,你会看到那种形式(正如@dirkgently正确地提到这有时被称为K&R风格C),就像你在其他旧版本中那样C书.

如果您是好奇的过时形式的函数声明和定义,请查看此链接 .在谷歌上搜索"旧式C函数声明"会带来一些点击.

  • 这也称为[K&R C](http://en.wikipedia.org/wiki/C_%28programming_language%29#K.26R_C). (3认同)