C语言的主方法究竟应该怎么写?
我们通过早些年的教材和其它教程能得到以下几种写法:
//这种写法十分罕见
main()
//这种写法是 Visual C++ 6.0 only,你放到任何一个现代点的编译器/开发环境中都是无法通过编译的。
void main()
//在 C++ 里,参数留空就代表它的参数为 void,而 C 中,你必须显式声明参数为 void。
int main()
根据C89/C99/C11标准文档,里面明确说明了主方法的两种写法:
int main(void) { /* .C语言Plus. */ }
//第一个入参为命令行参数个数,第二个入参为命令行参数数组。通常用于实现需要从命令行获取参数的功能。
int main(int argc, char *argv[]) { /* .C语言Plus. */ }
也就是说,其他的写法都是不符合标准的,有的是历史遗留问题,有的是编译器扩展,更有的不知从何而来。当然对于带参数的写法,其参数名可自定义。另外对于除标准提供的以外的写法,不同的编译器有不同的处理策略,有的可能编译不过,有的可能报警告,但一个“正经”的编译器是不会对标准提供的形式产生质疑的。
为了代码的通用可移植性,建议采用标准提供的形式,还是推荐使用标准文档中规定的这两种写法。如果一个函数确定无需传入任何参数,那么用void限定是一个不错的选择。
C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。
注意:第一个参数argc表示向main函数传递的参数的个数,但是它实际上要比你在命令行里输入的数据多一个,因为第一个参数表示该程序的执行路径,也就是说,如果你向命令行输入3个数,则argc实际上等于4;
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("参数个数是:%d\n",argc);
int i=0;
for(;i<argc;i++){
printf("%s\n",argv[i]);
}
return 0;
}
运行时输入以下三个参数。

运行结果:
参数个数是:4
E:\test\test.exe
apple
banana
watermelon
在C语言中,#include 预处理指令用于包含头文件,它有两种不同的引用方式:双引号(" ")和尖括号(< >)。这两种方式的主要区别在于它们告诉预处理器在哪里查找头文件: - 双引号(" "): 当你使用双引号时,预处理器会在当前文件所在的目录以及之后在编译器的包含路径(include path)中搜索头文件。 这种方式通常用于引用项目特定的头文件,这些文件可能不在标准库路径中。 如果文件名中包含空格或特殊字符,双引号是必须的。 - 尖括号(< >): 使用尖括号时,预处理器只在编译器的包含路径中搜索头文件,而不在当前文件所在的目录中搜索。 这种方式用于引用标准库头文件或第三方库的头文件,这些文件通常位于系统的标准库目录中。 尖括号的使用是跨平台的,不依赖于文件系统路径。
总结来说,双引号用于本地或项目特定的头文件,而尖括号用于标准库或第三方库的头文件。这种区分有助于编译器更有效地定位头文件,并确保代码的可移植性。