Frog_Belly 发表于 2023-7-29 18:43:13

关于main函数的一个小问题

本帖最后由 Frog_Belly 于 2023-7-29 18:44 编辑

最近我学小甲鱼课程和看其他书的时候,发现书上的main和小甲鱼写的main很多都不一样,而且网上搜的也不是一样。
有的写成这样:
int main()
...
有的写成这样:
main()
...
有的写成这样:
void main()
...
有的写成这样:
int main(int argc, char *args[])
...
小甲鱼写的是这样的:
int main(void)
...
到底哪种是对的,新人怕之后学习走歪路,求大佬指点{:5_111:}

陶远航 发表于 2023-7-29 18:43:25

关于main函数的写法,根据C语言标准(C89、C99、C11等),正确的写法是:

int main(void)


这是main函数的标准形式,它表示main函数不接收任何命令行参数,并且返回一个整数值(通常用于指示程序的执行状态)。

其他变种写法在不同的编译器和语言规范下可能被接受,但并不符合C语言的规范。例如:

· main():省略了返回类型,这在老版本的C语言标准中可能被接受,但在新的标准中已经被废弃。
· void main():将main声明为返回类型为void,这也是不符合C语言标准的写法。
· int main(int argc, char *argv[]):此形式允许main函数接收命令行参数,其中argc表示参数数量,argv是一个字符串数组,包含实际的参数值。这是一种常用的形式,特别是需要处理命令行参数的情况。

尽管某些编译器可能允许使用上述非标准形式,但为了保证代码的可移植性和符合C语言的规范,推荐使用int main(void)作为main函数的写法。
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-7-29 18:43:28

在C/C++编程中,关于 main 函数的写法存在一些不同的风格和约定,但只有一种是标准且被广泛接受的。让我解释每种写法的含义,并告诉你哪一种是正确的。

1.int main()
这是最常见的 main 函数写法。 int 表示 main 函数将返回一个整数值作为程序的退出状态码。在C/C++中,程序成功执行通常返回0,非零值表示出现了错误或异常。例如, return 0;表示程序正常结束, return 1;表示程序出现了某种错误。

2.main()
这种写法省略了函数的返回类型,但在C/C++中,如果省略返回类型,编译器会默认为 int 类型。因此,这种写法与第一种写法是等价的。

3.void main()
这种写法将 main 函数的返回类型定义为 void ,表示 main 函数没有返回值。这是一个不推荐的写法,因为C/C++标准要求 main 函数必须有返回值,通常用来指示程序的执行状态。尽管一些编译器可能支持这种写法,但这不是一个良好的编程实践,应该避免使用它。

4.int main(int argc, char *argv[])
这种写法增加了两个参数: argc 和 argv 。 argc 表示命令行参数的个数, argv 是一个指向字符串数组的指针,每个字符串表示一个命令行参数。例如,执行程序时,可以通过命令行输入参数,比如 ./program arg1 arg2 ,那么 argc 将为3, argv 指向程序名 "./program" , argv 指向 "arg1" , argv 指向 "arg2" 。这种写法在需要处理命令行参数的情况下很有用,但如果你的程序不需要处理命令行参数,可以不使用这两个参数。

5.int main(void)
这是C语言中最标准和推荐的 main 函数写法。它明确指定 main 函数没有任何参数,这意味着该程序不接受任何命令行参数。与第一种写法相比,它的返回类型也被明确指定为 int ,以便正确指示程序的执行状态。

所以,小甲鱼使用的 int main(void) 是正确且标准的写法。对于大多数C/C++编程场景,你可以安全地采用这种写法,它也是最为推荐的。遵循标准的写法可以帮助你养成良好的编程习惯,避免潜在的问题。

Frog_Belly 发表于 2023-7-29 18:45:44

陶远航 发表于 2023-7-29 18:43
关于main函数的写法,根据C语言标准(C89、C99、C11等),正确的写法是:




有点疑惑qaq,命令行参数是什么{:5_94:}
int main() 还没有解释呢

Frog_Belly 发表于 2023-7-29 18:46:29

isdkz 发表于 2023-7-29 18:43
在C/C++编程中,关于 main 函数的写法存在一些不同的风格和约定,但只有一种是标准且被广泛接受的。让我解 ...

这个回答还清晰一点,感谢指点{:5_95:}
页: [1]
查看完整版本: 关于main函数的一个小问题