c语言中void main是什么意思

99ANYc3cd6
预计阅读时长 9 分钟
位置: 首页 C语言 正文

字面意思分解

我们先从字面上拆解 void main() 这三个部分:

c语言中void main是什么意思
(图片来源网络,侵删)
  • main: 这是C程序的主函数,任何一个C程序都必须有一个 main 函数,它是程序执行的起点,操作系统在启动你的程序后,会找到并开始执行 main 函数中的第一条指令。
  • : 这是函数的标志,表示 main 是一个函数。
  • void: 这是一个返回类型关键字。void 的意思是“无类型”或“空类型”,当它用在函数名前面时,表示这个函数不返回任何值

void main() 的字面意思是:“一个名为 main 的函数,它不接受任何参数,并且不返回任何值。”


为什么 void main() 是错误的/不推荐的?

尽管从字面上可以理解,但 void main() 并不是C语言标准的一部分,它是一个被一些非常老旧的编译器(Turbo C/C++ 3.0)所支持的非标准写法。

现代的、符合标准的C编译器(如 GCC, Clang, MSVC)会将其视为一个错误或警告。

根本原因在于,C标准明确规定 main 函数应该返回一个 int(整数)类型给操作系统。

c语言中void main是什么意思
(图片来源网络,侵删)
  • int main(): 这是标准的、正确的写法之一,它表示程序执行完毕后,会返回一个整数值给操作系统,这个返回值通常被称为“退出状态码”(Exit Status Code)。
    • return 0;: main 函数正常执行完毕并返回 0,它告诉操作系统:“程序成功完成,没有出错。”
    • return 1; (或其他非零值): 如果返回一个非零值,它告诉操作系统:“程序在执行过程中遇到了错误或异常终止。”

操作系统(如 Windows, Linux, macOS)可以利用这个返回值来判断你的程序是否成功运行,在Linux中,你可以通过命令 echo $? 查看上一个程序运行的退出状态码。


标准的 main 函数写法

根据C语言标准(C89/C90, C99, C11等),main 函数有且只有以下两种标准形式:

无参数,返回 int

这是最常见、最简洁的标准写法。

#include <stdio.h>
int main(void) {
    printf("Hello, World!\n");
    // 隐式返回 0
    // 在 main 函数中,如果执行到函数末尾没有 return 语句,
    // 编译器会自动在末尾加上 "return 0;"
    return 0; // 明确表示程序成功结束
}

注意:这里的 int main(void)int main() 在现代C标准中几乎没有区别。void 明确表示不接受任何参数,而 int main() 在C99标准中也表示不接受任何参数。int main(void) 的写法更具描述性。

c语言中void main是什么意思
(图片来源网络,侵删)

带参数,返回 int

这种写法允许你的程序从命令行接收参数。

#include <stdio.h>
int main(int argc, char *argv[]) {
    // argc: argument count (参数个数)
    // argv: argument vector (参数向量),一个字符串数组
    printf("程序名称: %s\n", argv[0]);
    printf("总共有 %d 个参数\n", argc);
    for (int i = 0; i < argc; i++) {
        printf("参数 %d: %s\n", i, argv[i]);
    }
    return 0; // 程序成功结束
}

如何编译和运行带参数的程序? 假设你把上面的代码保存为 test.c,编译后生成 test.exe (在Windows) 或 test (在Linux/macOS)。

在命令行中运行:

./program arg1 arg2 "arg with space"

输出将会是:

程序名称: ./program
总共有 4 个参数
参数 0: ./program
参数 1: arg1
参数 2: arg2
参数 3: arg with space

总结与对比

特性 void main() int main()
标准性 非标准,不被现代C标准支持。 标准,符合所有现代C标准。
返回值 不返回任何值。 必须返回一个 int 类型的值给操作系统。
可移植性 ,只在一些老旧的编译器(如TC)上工作。 ,在任何符合标准的编译器上都能正常工作。
与操作系统交互 无法告知程序是否成功。 可以通过返回 0 或非零值来告知程序的成功或失败状态。
推荐程度 强烈不推荐 强烈推荐

请永远不要在C语言中使用 void main()

你应该始终坚持使用标准的 int main() 写法,这是一种良好的编程习惯,它能确保你的代码具有更好的可移植性可读性正确性,并且能与操作系统进行正确的交互,即使你的 main 函数末尾没有 return 0;,现代编译器也会自动为你添加,保证其符合标准。

-- 展开阅读全文 --
头像
dede list autoindex
« 上一篇 12-07
织梦CMS技术资料哪里能免费下载?
下一篇 » 12-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]