C 语言教程 | 菜鸟教程

2025-12-21 21:21:57 · 作者: AI Assistant · 浏览: 13

C 语言是一种通用的、面向过程式的计算机程序设计语言,由丹尼斯·里奇在贝尔电话实验室开发,用于移植与开发 UNIX 操作系统。它以其高效性、简洁性和广泛的应用领域而闻名,是所有程序员的入门首选语言。

1. 什么是 C 语言

1.1 历史背景

C 语言的开发始于 1972 年,主要用于实现 UNIX 操作系统。其核心目标是提供一种简洁、高效的语言,以便在各种平台上快速移植。

1.2 语言特点

  • 面向过程:强调通过函数和子程序来组织代码。
  • 高效性:内存管理、函数调用和内部库函数使其在性能上表现出色。
  • 灵活:支持指针、动态内存分配和结构体,适合底层开发。

1.3 适用场景

  • 系统编程
  • 应用程序开发
  • 游戏开发
  • 数据结构与算法实现

2. C 语言基础语法

2.1 数据类型

  • int:整数
  • floatdouble:浮点数
  • char:字符类型
  • void:无类型(函数返回类型)
  • enum:枚举类型

2.2 变量命名规则

  • 以字母开头
  • 仅允许使用前缀 _·(现代 C 语言允许)
  • 不得使用关键字 reserved words

2.3 基本语句结构

语句1;
语句2;
...

2.4 运算符优先级

了解运算符的优先级对于写正确的表达式至关重要。例如: - !~(逻辑非和位非)具有最高优先级 - */% 具有中等优先级

3. 指针与内存管理

3.1 指针基础

  • 指针用于动态内存管理,是 C 语言的核心特性。
  • 常用指针操作: c char *p = "hello";
  • p 指向字符串的第一个字符。
  • p+1 指向字符串的第二个字符。

3.2 内存分配

  • malloc():动态分配内存。
  • free():释放内存。

3.3 指针与数组

  • 数组可以视为指针的值域。
  • 指针运算与数组索引一致: c char *p = "hello"; p[0] // 'h' p+1 // 指向 'h' 的下一个字符

4. 函数

4.1 函数定义

void function_name() {
    // 函数体
}

4.2 函数调用

function_name();

4.3 返回值

  • C 语言允许函数返回多个值,通过数组或结构体实现。

4.4 标准库函数

  • printf():输出格式化
  • scanf():输入格式化
  • strlen():获取字符串长度
  • strcpy():字符串复制

5. 文件操作

5.1 文件描述符

  • 使用 fopen() 获取文件描述符。
  • 描述符值通常为非负整数。

5.2 文件操作函数

  • fopen(): 打开文件
  • fclose(): 关闭文件
  • fread(): 读取数据
  • fwrite(): 写入数据

6. 错误处理

6.1 动态内存分配错误

  • 使用 malloc() 时,若返回值为 NULL,应立即释放并重新分配。

6.2 文件操作错误

  • 检查返回值,-1 表示文件不存在。

7. 指针与数组深入

7.1 指针与数组的关系

  • 数组名可以视为指向第一个元素的指针。
  • 数组运算与指针运算一致。

7.2 数组大小

  • 使用 sizeof 操作符获取数组大小。

8. 常见错误与调试

8.1 指针与数组越界

  • 超出数组范围可能导致 undefined behavior。
  • 使用 调试器断点 可以定位问题。

8.2 数据类型转换

  • 隐式的数据类型转换可能导致数值问题。
  • 使用强制类型转换来明确转换。

9. C 语言的未来

9.1 C99 标准

  • 引入了结构体、指针、数组和算术运算符的重载等新特性。

9.2 C11 标准

  • 引入了并行编程和多线程支持。

9.3 C19 标准

  • 引入了'r' 运算符和符号常量。

总结

C 语言凭借其高效性、简洁性和广泛的应用领域,成为编程世界中不可或缺的基础语言。通过学习 C 语言,你可以掌握底层系统的操作,为后续的编程学习打下坚实的基础。