C语言章节目录¶
约 1479 个字 预计阅读时间 5 分钟
C语言基础知识¶
介绍C语言的基本语法,包括C语言基本代码(简单的Hello World程序)的分析、C语言下字符的概念以及ASCII码的概念、转义字符、C语言语句的分类和简单介绍以及C语言如何进行注释
进制转换与类型在内存中存储方式¶
介绍进制的概念以及二进制、八进制、十进制、十六进制之间的转换,为了更好理解后面的类型,还会介绍原码、反码和补码的概念,接着还介绍了计算机中的单位、大端和小端字节序以及浮点数在内存中的存储方式
C语言数据类型与变量¶
介绍了C语言常见的数据类型,包括基本数据类型、数组类型(包括变长数组的介绍以及二分查找算法的基本介绍)、结构体类型、联合体类型和枚举类型。有了基本数据类型,在本节中还介绍了如何在C语言中定义变量以及变量的分类
Note
需要注意,C语言中的指针类型在后面单独的一个章节C语言指针介绍
C语言操作符¶
介绍C语言中如下的操作符:
- 算术操作符:
+
、-
、*
、/
、%
- 移位操作符:
<<
、>>
- 位操作符:
&
、|
、^
、~
- 赋值操作符:
=
、+=
、-=
、*=
、/=
、%=
、<<=
、>>=
、&=
、|=
、^=
- 单目操作符:
!
、++
、--
、&
、*
、+
、-
、~
、sizeof
、(类型)
- 关系操作符:
>
、>=
、<
、<=
、==
、!=
- 逻辑操作符:
&&
、||
- 条件操作符:
? :
- 逗号表达式:
,
- 下标引用:
[]
- 函数调用:
()
- 结构成员访问:
.
、->
在这些操作符介绍的过程中也会介绍一些操作符的特点介绍,例如逻辑操作符中的短路问题
操作符之间也会存在优先级问题,在本节也会详细介绍这个问题,并且在运算过程中,因为不同的数据类型分配的空间大小不同,所以还会介绍类型转换相关的知识,例如强制类型转换和隐式类型转换、表达式求值等
Note
有关指针的运算符会在后面C语言指针介绍
C语言的标准输入函数scanf
和标准输出函数printf
¶
介绍C语言中标准输入和输出的函数,本节主要介绍这个函数的使用方法和注意事项
C语言中的分支语句¶
介绍C语言中的分支语句,包括if
、switch
、goto
语句
C语言中的循环语句¶
介绍C语言中的循环语句,包括while
、do-while
、for
语句、并且以具体例子体现出变量作用域对访问变量的影响
C语言函数¶
介绍C语言中的库函数、如何自定义函数、嵌套调用和链式调用、函数声明和定义的区别、作用域和生命周期的概念、static
关键字和extern
关键字和函数递归
在「如何自定义函数」部分会介绍函数的形式参数和实际参数的区别以及数组类型如何作为函数的形式参数
C语言指针¶
本节是C语言的难点,需要耐心去理解「指针即地址」的观点,在本节中会介绍下面的内容:
- 地址总线和地址的关系
- C语言指针变量操作和地址的关系:介绍基本的运算符
*
和&
,在使用*
时需要考虑指针的数据类型,这里会重点介绍不同的数据类型使用*
的不同效果 - C语言指针变量的基本运算
void*
指针const
关键字修饰变量和指针:介绍const
关键字的作用以及指针中顶层const
和底层const
的区别- 野指针问题:介绍野指针的概念以及如何避免野指针的发生
- 断言
assert
宏函数的使用 - 指针和数组的关系:这一部分会介绍数组名在C语言中的特点以及直接使用数组名和
&数组名
的区别,这一部分还会介绍sizeof
运算符在计算数组大小时的特点。为了更好得理解指针和数组,本部分还会结合指针介绍数组下标访问符的本质,接着介绍冒泡排序算法应用数组作为参数传递。接着介绍二级指针、指针数组(数组中存放指针的数组)变量和使用二级指针模拟C语言中的二维数组,最后在本部分会介绍传值调用和传址调用的区别 - C语言其他指针类型:本部分会介绍字符指针变量、数组指针(指向数组的指针)变量、函数指针(指向函数的指针)变量以及函数指针数组。这一部分会引出转移表的概念和应用。最后,本部分还会介绍
typedef
关键字的使用 - C语言指针应用:本部分会介绍回调函数以及会以一个具体的函数
qsort
为例介绍回调函数的使用
C语言字符函数、字符串函数与内存函数¶
本部分会介绍头文件ctype.h
和string.h
中的函数
C语言动态内存管理¶
本部分会介绍动态内存管理的相关知识,包括malloc
、calloc
、realloc
、free
函数的使用、C/C++程序内容区域分布、常见的动态内存管理错误的处理和柔性数组
C语言文件操作¶
本部分会介绍C语言中的文件操作以及文件缓冲区的概念
C语言编译与链接¶
本部分会介绍C语言程序从编写完到生成可执行程序整个过程中涉及的知识
C语言预处理¶
本部分会介绍C语言预处理的相关知识,包括预处理指令、宏定义、条件编译等