user-0 提问: ？？？实在不懂了

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 首先，我说的是“看的C书至少都有20年以上的历史了”，引号中的文字意思很清楚。这是个语文的问题。 其次，我说的是标准指定了main函数的语法形式，至少有两种，我只是使用了其中之一，我没说别的。我不知道我的局限性是从何说起的。 最后，关于变长数组，我说的是 int n = 5, a [n]; 这种。而且，这个声明在C语言里是合法的。我也不是指用malloc分配的动态空间数组。 我看的C书不多，严格来说一本都没看过，因为很多书看了不如不看。甚至我连C语言之父的经典著作都没看过。所以，看的C书可能还不如你多。这是实话。唯一的例外是C99，C11，C18的标准文档。但标准文档中库的部分我也没有完全通读。

user: user-3
content: 引用 11 楼 均陵鼠侠 的回复:[quote=引用 8 楼 自信男孩 的回复:]函数声明需要加分号;因为声明也是一条语句～ 有警告，exit函数调用要引入stdlib.h头文件。另外，exit(0)有参数～ 至少在C语言里，声明和语句是严格区分的。声明有声明的语法，语句有语句的组成。因为都有分号所以声明和语句是一回事，这是很奇怪的定义。 我发现这个论坛里的人，看的C书至少都有20年以上的历史了，甚至还在说C语言没有变长数组。如果工作中还用得上C语言，该补的课还是要补的。[/quote]  C语言于1972年11月问世，1978年美国电话电报公司（AT&T）贝尔实验室正式发布C语言，1983年由美国国家标准局（American National Standards Institute，简称ANSI）开始制定C语言标准，于1989年12月完成，并在1990年春天发布，称之为ANSI C，有时也被称为 C89 或 C90  另外，真没你看书历史长，我从接触C语言书本，才有10年左右，但是看的时间也就几年吧。你说的是看书20多年，还是C语言出书20多年，没看你描述清楚～

user: user-3
content: 引用 10 楼 均陵鼠侠 的回复:[quote=引用 2 楼 user-5 的回复:]main()只能有一个，而且它也不需要声明。 只是说main函数的定义只能有一个，函数定义实际上也是函数声明。所以main函数不需要声明的说法是错误的。 函数可以声明多次，但是带有函数体的函数声明只能有一次，main函数也是这样。比如：  int main (void); int main (void) {     exit (0); } 这是没有任何问题的。 函数main 和其它函数只有一个地方是不同的：对它的调用是在运行库中，所以，要求运行库中的调用形式（这是你没办法改变的）必须和你声明的形式匹配。这就是为什么标准指定了函数main的声明形式。[/quote]  那么这样函数声明，也有这样的吧 int main(int argc, char *argv[]);你说的main函数声明也有局限性～

user: user-3
content: 引用 11 楼 均陵鼠侠 的回复:[quote=引用 8 楼 自信男孩 的回复:]函数声明需要加分号;因为声明也是一条语句～ 有警告，exit函数调用要引入stdlib.h头文件。另外，exit(0)有参数～ 至少在C语言里，声明和语句是严格区分的。声明有声明的语法，语句有语句的组成。因为都有分号所以声明和语句是一回事，这是很奇怪的定义。 我发现这个论坛里的人，看的C书至少都有20年以上的历史了，甚至还在说C语言没有变长数组。如果工作中还用得上C语言，该补的课还是要补的。[/quote]  你的理解变长数组是这样的吗？int n, a[n];我说的变长数组是指这样的。int a[0]; a = (int *)malloc(xxxx *sizeof(int));这样的定义可不是我说的变长数组。 所以，你的理解认为是我的理解，这种说法站不住脚。 描述有语句语境，有背景，没看到你提到背景，环境，只是在这讨论理论。那么你看书如果多的话，应该引用一下课本上（或者）书本上的文字，当然这些文字也有时效性，看完书本还不行，还得看编译器的版本，老旧版本的语法检查规则也有差异。 所以，你在这里教训别人，不如引入例子更有说服力，你说呢？

user: user-2
content: 引用 8 楼 自信男孩 的回复:函数声明需要加分号;因为声明也是一条语句～ 有警告，exit函数调用要引入stdlib.h头文件。另外，exit(0)有参数～ 至少在C语言里，声明和语句是严格区分的。声明有声明的语法，语句有语句的组成。因为都有分号所以声明和语句是一回事，这是很奇怪的定义。 我发现这个论坛里的人，看的C书至少都有20年以上的历史了，甚至还在说C语言没有变长数组。如果工作中还用得上C语言，该补的课还是要补的。

user: user-2
content: 引用 2 楼 user-5 的回复:main()只能有一个，而且它也不需要声明。 只是说main函数的定义只能有一个，函数定义实际上也是函数声明。所以main函数不需要声明的说法是错误的。 函数可以声明多次，但是带有函数体的函数声明只能有一次，main函数也是这样。比如：  int main (void); int main (void) {     exit (0); } 这是没有任何问题的。 函数main 和其它函数只有一个地方是不同的：对它的调用是在运行库中，所以，要求运行库中的调用形式（这是你没办法改变的）必须和你声明的形式匹配。这就是为什么标准指定了函数main的声明形式。

user: user-1
content: C和C++完整教程：https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-3
content: 函数声明需要加分号;因为声明也是一条语句～ 有警告，exit函数调用要引入stdlib.h头文件。另外，exit(0)有参数～

user: user-4
content: 建议行22的主函数改成int类型 有时候你需要通过主函数的返回值是否为0来判断代码有没有错误的

user: user-5
content: 引用 5 楼 change_2 的回复:[quote=引用 2 楼 user-5的回复:]main()只能有一个，而且它也不需要声明。 谢谢你，大佬，你是对的[/quote]成了吗？  引用 5 楼 change_2 的回复:[quote=引用 2 楼 user-5的回复:]main()只能有一个，而且它也不需要声明。 谢谢你，大佬，你是对的[/quote]可以了吗?

user: user-0
content: 引用 2 楼 user-5的回复:main()只能有一个，而且它也不需要声明。 谢谢你，大佬，你是对的

user: user-0
content: 引用 2 楼 user-5的回复:main()只能有一个，而且它也不需要声明。 第36行的exit（0）那里就是红色的

user: user-0
content: 引用 2 楼 user-5的回复:main()只能有一个，而且它也不需要声明。 哦，但是第一张图片是没有加main的，它那里的错误是为什么呢

user: user-5
content: main()只能有一个，而且它也不需要声明。

user: user-5
content: 第4行的main()是多余的