在C语言程序中,注释是用来解释代码、增加程序可读性的文本,它本身不会被编译器执行。

(图片来源网络,侵删)
C语言主要提供两种注释方式:
单行注释 (C99标准引入)
这是最常用、最现代的注释方式,以两个正斜杠 开头,直到该行末尾的所有内容都会被视为注释。
特点:
- 简洁方便:只需在代码后面或行首添加 即可。
- 推荐使用:在编写新的C代码时,强烈推荐使用这种注释方式。
示例:

(图片来源网络,侵删)
#include <stdio.h>
int main() {
// 这是一个单行注释,解释下面这行代码的作用
printf("Hello, World!\n"); // 也可以在代码后面添加注释
return 0; // 程序正常结束
}
多行注释 (C89/C90及更早标准)
这种方式以一个正斜杠和一个星号 开始,以一个星号和一个正斜杠 结束,它们之间的所有内容(可以跨越多行)都会被视为注释。
特点:
- 可跨多行:适合对一段较复杂的逻辑或函数进行大段的说明。
- 向后兼容:在所有C语言标准中都有效,包括非常古老的代码。
- 注意嵌套:C语言不支持多行注释的嵌套,如果在一个 块内又出现了 ,编译器会认为在第一个 处注释就结束了,导致后续代码被错误地当作注释。
示例:
#include <stdio.h>
int main() {
/*
* 这是一个多行注释。
* 它可以跨越多行,
* 用来解释一段复杂的逻辑。
*/
printf("This is a multi-line comment example.\n");
return 0;
}
错误示例(嵌套多行注释):

(图片来源网络,侵删)
/*
外层注释开始
/* 内层注释,这是错误的用法! */
编译器会在第一个 "*/" 处认为注释结束,
导致这里的代码也会被当作注释处理,从而引发编译错误。
外层注释结束
*/
总结与最佳实践
| 特性 | 单行注释 () | 多行注释 () |
|---|---|---|
| 语法 | // 注释内容 |
/* 注释内容 */ |
| 跨行 | 仅限单行 | 可以跨多行 |
| 标准 | C99 及以后 | 所有C标准(C89/C90, C99, C11等) |
| 嵌套 | 不存在嵌套问题 | 不支持嵌套 |
| 使用场景 | 行内解释、简单说明 | 函数/模块的整体说明、大段逻辑解释 |
最佳实践建议:
- 优先使用单行注释 ():在大多数情况下,单行注释更清晰、更安全,避免了嵌套问题。
- 为函数、复杂算法使用多行注释 ():当需要详细描述一个函数的功能、参数、返回值,或者解释一个复杂的算法块时,多行注释能提供更好的结构。
- 保持注释简洁明了:注释应该解释“为什么这么做”(Why),而不是“做了什么”(What),代码本身已经说明了“做了什么”。
好的注释解释了意图:
// 使用快速排序算法对数组进行升序排序,因为它在平均情况下时间复杂度为 O(n log n)
void quick_sort(int arr[], int low, int high) {
// ... 排序代码 ...
}
而不是简单地重复代码:
// 对数组进行排序
void quick_sort(int arr[], int low, int high) {
// ... 排序代码 ...
}
C语言程序的注释是 (单行注释) 和 (多行注释),在现代C编程中,推荐优先使用 。
