C 语言编程教程

C 语言首页

C 语言基础

C 语言概述 C 语言特性 C 语言发展历史 C 语言下载安装和环境配置 C 语言程序结构 C 语言 Hello World C 编译过程 C 注释 C 标记 C 关键字 C 标识符 C 用户输入 C 基本语法 C 数据类型 C 变量 C 整数提升 C 类型转换 C 类型转换 C 布尔值

C 语言中的常量和文字

C 常量 C 字面量 C 转义序列 C 格式说明符

C 语言中的运算符

C 运算符 C 算术运算符 C 关系运算符 C 逻辑运算符 C 位运算符 C 赋值运算符 C 一元运算符 C 递增和递减运算符 C 三元运算符 C sizeof 运算符 C 运算符优先级 C 其他运算符

C 语言中的决策

C 决策 C if 语句 C if...else 语句 C 嵌套 if 语句 C switch 语句 C 嵌套 switch 语句

C 语言中的循环

C 循环 C While 循环 C For 循环 C Do...while 循环 C 嵌套循环 C 无限循环 C Break 语句 C Continue 语句 C goto 语句

C 语言中的函数

C 函数 C Main 函数 C 按值调用函数 C 按引用调用函数 C 嵌套函数 C 可变参数函数 C 用户定义函数 C 回调函数 C return 语句 C 递归

C 语言中的作用域规则

C 作用域规则 C 静态变量 C 全局变量

C 语言中的数组

C 数组 C 数组的属性 C 多维数组 C 将数组传递给函数 C 从函数返回数组 C 可变长度数组

C 语言中的指针

C 指针 C 指针和数组 C 指针的应用 C 指针运算 C 指针数组 C 指向指针的指针 C 将指针传递给函数 C 从函数返回指针 C 函数指针 C 指向数组的指针 C 指向结构体的指针 C 指针链 C 指针 vs 数组 C 字符指针和函数 C NULL 指针 C void 指针 C 悬垂指针 C 解引用指针 C Near、Far 和 Huge 指针 C 指针数组的初始化 C 指针与多维数组

C 语言中的字符串

C 字符串 C 字符串数组 C 特殊字符

C 语言的结构体和联合

C 结构体 C 结构体和函数 C 结构体数组 C 自引用结构 C 查找表 C 点 (.) 运算符 C 枚举(或 enum) C 结构填充和打包 C 嵌套结构 C 匿名结构和联合 C 联合 C Bit 位字段 C Typedef

C 语言中的文件处理

C 输入和输出 C 文件 I/O(文件处理)

C 语言中的预处理器

C 预处理器 C #pragma 编译指示 C 预处理器操作符 C 宏 C 头文件

C 语言中的内存管理

C 内存管理 C 内存地址 C 存储类

C 其他主题

C 错误处理 C 可变参数 C 命令执行 C 数学函数 C static 静态关键字 C 随机数生成 C 命令行参数

C 语言编程资源

C 语言问题与解答答案 C 语言快速指南 C 语言速查表 C 语言实用资源 C 语言讨论


C 语言中的注释

在 C 语言程序中使用注释可以提高代码的可读性。必须在代码的适当位置插入注释。对于编译器而言,注释会被忽略。在 C 语言中,注释是一行或多行文本,编译器在构建机器码时会跳过这些文本。

当程序需要修改时,C 语言中的注释起着重要作用,尤其是由原作者以外的其他人修改时。程序员通常不重视添加注释,但有效地使用注释对于提高代码质量至关重要。

为什么在 C 语言编程中使用注释?

任何编程语言,包括 C 语言,都比英语等人类语言简洁得多。 C 语言的关键字数量少得多,是最小的语言之一,只有 32 个关键字。因此,C 语言程序中的指令可能难以理解,尤其是对于没有编程背景的人来说。

C 语言语法也多种多样且复杂。程序员通常会尝试增加复杂性来优化代码。然而,这反而会使代码难以理解。 注释提供了有用的解释,并传达了使用特定方法背后的意图。

例如,以 C 语言中的 ?: 运算符为例,它是 if-else 语句 的快捷方式。

因此,以下代码并非如此 -

if (a % 2 == 0){
   printf("%d is Even
", a);
} else {
   printf("%d is Odd
", a);
}

可以使用以下语句 -

(a % 2 == 0) ? printf("%d is Even
", a) : printf("%d is Odd
", a);

显然,第二种方法比第一种方法更复杂。如果添加有用的注释,可以更容易理解所用语句的意图和逻辑。

C 语言中的注释类型

C 语言中有两种类型的注释 -

  • 单行注释
  • 多行注释

C 语言中的单行注释

C++ 风格的单行注释在 C99 标准中被纳入 C 编译器。如果任何文本以 // 符号开头,则该行的其余部分将被视为注释。

代码中,后跟双斜杠或正斜杠 [//] 的文本将被视为单行注释。 C 编译器 在编译过程中会忽略 // 之后的所有文本。与多行注释或块注释不同,它无需关闭。

单行 C 注释的语法

//注释文本

// 符号可以出现在任何位置。它表示从该符号之后到行末的所有文本都是注释。编辑器中的后续行再次用于编写有效的 C 语句。

示例:C 语言中的单行注释

查看以下程序,并观察我们如何在其主函数中使用单行注释 -

/* 在线 C 编译器和编辑器 */
#include <stdio.h>
#include <math.h>

/* 函数的前向声明 */
float area_of_square(float);

float area_of_square(float side){
   float area = pow(side,2);
   return area;
}

// 主函数 - 整行注释
int main(){

    // 变量声明(此注释位于 C 语句之后)
    float side = 5.50;
    
    float area = area_of_square(side); // 调用函数
   	printf ("Side = %5.2f Area = %5.2f", side, area);

   	return 0;
}
输出

运行此代码时,将产生以下输出 -

Side = 5.50 Area = 30.25

C 语言中的多行注释

在早期版本的 C 语言 (ANSI C) 中,在符号 /* 和 */ 之间插入的任何长度的文本都被视为注释。这些文本在代码文件中可以跨越多行。您可以称之为多行注释。一段连续的行被视为注释。

C 语言多行注释的语法

多行注释的一般结构如下 -

/* 注释从此处开始
第 1 行
第 2 行
..
..
注释从此处结束*/

例如 −

/*
多行注释示例
使用 printf() 函数打印 Hello World
*/

显然,由于编译器会忽略注释,C 语言的语法规则不适用于注释文本。

注释可以出现在程序中的任何位置,例如顶部、代码之间,或者函数或结构体声明的开头等等。

示例:C 语言中的多行注释

在此示例中,我们有一个多行注释,用于解释给定代码中使用的特定用户定义函数的作用 −

/* 计算正方形面积的程序 */

/* 头文件 */
#include 
#include 

/* 函数的前置声明 */
float area_of_square(float);

/* 主函数 */
int main(){

    /* 变量声明 */
    float side = 5.50;
    
    /* 调用函数 */
   float area = area_of_square(side);
   printf("Side = %5.2f Area = %5.2f", side, area);

   return 0;
}

/* 用户定义函数来计算
正方形的面积。它以边长为参数,
并返回面积 */

float area_of_square(float side){
   float area = pow(side, 2);
   return area;
}
输出

执行代码时,将产生以下输出 -

Side = 5.50 Area = 30.25

插入注释时,必须确保每个以 /* 开头的注释都必须有对应的 */ 符号。如果注释以 /* 开头且未关闭,编译器将抛出错误。

注意: 块注释或多行注释必须放在 /* 和 */ 符号内,而单行注释以 // 符号开头,有效期至行末。

我们始终鼓励在程序中添加注释。程序员通常避免添加注释。然而,如果没有适当的注释,他们有时会发现很难调试和修改代码。注释在协作开发中尤为重要。有效地使用注释对团队的所有成员都有帮助。

即使编译器会忽略注释,它们也应该含义清晰、简洁。每当代码需要修改时,都应在注释中注明修改原因、时间戳和作者。