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

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

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

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

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