Skip to content

基础语法

C语言有一套特定的语法规则,了解这些规则是编写正确C程序的基础。在本章节中,我们将介绍C语言的基本语法元素,包括语句结构、注释、标识符命名规则等。

1. 语句和分号

在C语言中,语句是执行特定操作的指令,每个语句都必须以分号(;)结尾。分号是语句的结束标志,告诉编译器一个语句已经结束。

例如:

c
int a = 10;  // 赋值语句
printf("Hello!\n");  // 输出语句
return 0;  // 返回语句

2. 注释

注释是用于解释代码的文字,编译器会忽略注释内容。在C语言中,有两种注释方式:

2.1 单行注释

使用//开头,注释从//开始到行尾结束:

c
// 这是一个单行注释
int a = 10;  // 这也是一个单行注释,说明变量a的值

2.2 多行注释

使用/*开头,*/结尾,注释可以跨越多行:

c
/*
这是一个多行注释
可以跨越多行
用于详细解释代码
*/
int b = 20;

3. 标识符

标识符是用于命名变量、函数、数组等的名称。在C语言中,标识符的命名规则如下:

  1. 只能包含字母、数字和下划线(_)
  2. 不能以数字开头
  3. 区分大小写(如ageAge是不同的标识符)
  4. 不能使用C语言的关键字(如intiffor等)

3.1 示例

合法的标识符

  • name
  • _count
  • student_age
  • MAX_VALUE

非法的标识符

  • 123abc(以数字开头)
  • student-age(包含连字符)
  • int(使用关键字)
  • my name(包含空格)

3.2 命名规范

虽然C语言没有强制要求,但为了代码的可读性,通常遵循以下命名规范:

  • 变量和函数:使用小写字母,单词之间用下划线分隔(如student_name
  • 常量:使用大写字母,单词之间用下划线分隔(如MAX_SIZE
  • :使用大写字母,单词之间用下划线分隔(如PI

4. 关键字

关键字是C语言中预定义的、具有特殊含义的单词,不能用作标识符。以下是C语言的关键字:

关键字说明
auto自动变量
break跳出循环或switch语句
caseswitch语句的分支
char字符类型
const常量
continue继续循环的下一次迭代
defaultswitch语句的默认分支
dodo-while循环的开始
double双精度浮点类型
elseif语句的否则分支
enum枚举类型
extern外部变量声明
float单精度浮点类型
forfor循环
goto无条件跳转
if条件语句
int整数类型
long长整数类型
register寄存器变量
return函数返回
short短整数类型
signed有符号类型
sizeof计算数据类型大小
static静态变量
struct结构体类型
switch多分支选择语句
typedef类型定义
union共用体类型
unsigned无符号类型
void空类型
volatilevolatile变量
whilewhile循环

5. 空白字符

C语言中的空白字符(空格、制表符、换行符)通常被编译器忽略,除非它们出现在字符串字面量中。空白字符用于分隔代码元素,提高代码的可读性。

例如:

c
// 以下两种写法是等效的
int a=10;
int a = 10;

// 以下写法更易读
int calculate_area(int length, int width) {
    return length * width;
}

6. 预处理指令

预处理指令是以#开头的特殊指令,在编译之前由预处理器处理。常见的预处理指令包括:

  • #include:包含头文件
  • #define:定义常量或宏
  • #ifdef/#ifndef/#endif:条件编译

例如:

c
#include <stdio.h>  // 包含标准输入输出头文件

#define PI 3.14159  // 定义常量PI

int main() {
    double radius = 5.0;
    double area = PI * radius * radius;
    printf("Area: %.2f\n", area);
    return 0;
}

7. 代码块

代码块是由花括号{}包围的一组语句,用于将多条语句组合成一个逻辑单元。代码块通常用于函数体、条件语句、循环语句等。

例如:

c
int main() {
    // 代码块开始
    int a = 10;
    int b = 20;
    int sum = a + b;
    printf("Sum: %d\n", sum);
    // 代码块结束
    return 0;
}

8. 转义字符

转义字符是以反斜杠\开头的特殊字符,用于表示一些无法直接输入的字符。常见的转义字符包括:

转义字符含义
\n换行
\t制表符(Tab)
\r回车
\b退格
\单引号
\"双引号
\\反斜杠

例如:

c
printf("Hello\nWorld!");  // 输出Hello后换行,再输出World!
printf("Name:\tJohn");  // 输出Name:后加一个制表符,再输出John
printf("He said, \"Hello!\"\n");  // 输出带双引号的字符串

9. 示例:综合运用

现在,让我们看一个综合运用上述语法元素的例子:

c
#include <stdio.h>

// 定义常量
#define MAX_STUDENTS 50

// 函数声明
int calculate_average(int scores[], int count);

int main() {
    /*
    这是一个计算学生平均分数的程序
    演示了C语言的基本语法
    */
    
    // 定义变量
    int student_scores[MAX_STUDENTS];
    int student_count = 5;
    int i;
    
    // 输入分数
    student_scores[0] = 85;
    student_scores[1] = 92;
    student_scores[2] = 78;
    student_scores[3] = 95;
    student_scores[4] = 88;
    
    // 计算平均分
    int average = calculate_average(student_scores, student_count);
    
    // 输出结果
    printf("学生人数: %d\n", student_count);
    printf("平均分数: %d\n", average);
    
    return 0;
}

// 函数定义:计算平均分
int calculate_average(int scores[], int count) {
    int sum = 0;
    for (int i = 0; i < count; i++) {
        sum += scores[i];
    }
    return sum / count;
}

小结

C语言的基础语法包括:

  1. 语句和分号:每个语句必须以分号结尾
  2. 注释:单行注释(//)和多行注释(/* */)
  3. 标识符:用于命名变量、函数等,遵循特定的命名规则
  4. 关键字:C语言预定义的、具有特殊含义的单词
  5. 空白字符:提高代码可读性,被编译器忽略
  6. 预处理指令:以#开头的特殊指令
  7. 代码块:由花括号{}包围的一组语句
  8. 转义字符:以反斜杠\开头的特殊字符

掌握这些基础语法元素是编写正确C程序的前提,也是后续学习更复杂概念的基础。在接下来的章节中,我们将学习C语言的数据类型和变量。