C语言
1,程序
(1)程序基本概念
- C语言程序至少由一个 main() 函数组成
- main() 函数是执行 C语言程序的人口函数,代码从这里开始执行
- 如无特殊情况,一般是从上到下依次执行 C语言程序的语句
- main() 函数执行完毕,意味着整个 C语言程序执行完毕
(2)程序基本结构
- C语言程序由一个或多个函数组成,其中至少有一个 main() 函数
- 函数由简单语句和复合语句构成
- 复合语句由若干个简单语句组成,例如 if 语句和 while 语句都是复合语句
- 使用关键字可以组成语句
- 表达式加上分号 ";" 可以组成语句
- 运算符和操作数可以组成表达式
(3)程序代码可读性
- 水平空白 适当使用空格(用空格键或 Tab键)以提高代码的可读性
- 垂直空白 适当加入空行(用 Enter键)以提高代码的可读性
2,关键字
- break 结束循环语句或 switch...case 分支结构
- case 可以实现 switch...case 多分支结构
- continue 提前进入下一次循环
- default switch...case 多分支结构的 default 部分
- do 可以实现 do...while 循环结构
- else 可以实现 if...else 分支结构
- for 可以实现 for 循环结构
- if 可以实现 if...else 分支结构
- return 结束一个函数并可以附带一个整数作为函数的返回值(?)
- sizeof 求出数据类型或变量的存储空间大小
- struct 定义结构体类型
- switch 可以实现 switch...case 多分支结构
- typedef 定义数据类型的同义词(别名)
- unsigned 无符号数
- void void 类型,表示通用类型
- while 可以实现 while 循环结构
3,基本数据类型
- char 字符类型,本质上是整数类型,sizeof(char) 等于 1
- short 短整数类型,short int 的简写,sizeof(short) 等于 2
- int 整数类型,sizeof(int) 等于 2 或 4
- long 长整数类型,long int 的简写,sizeof(long) 等于 4
- long long 长整数类型,long long int 的简写,sizeof(long long) 等于 8
- float 单精度浮点数类型,sizeof(float) 等于 4
- double 双精度浮点数类型,sizeof(double) 等于 8
4,ASCII字符集
- 使用7位二进制编码,一共有128个字符(95个“可显示字符”和33个“控制字符”)
5,字符串
- 以字符 '\0' (ASCII编号为0的字符)为结束标记的 char类型的数组
- 借助字符数组来实现,没有专门的关键字
6,变量
(1)定义变量
数据类型 变量名;
(2)定义变量并初始化
数据类型 变量名 = 初始值;
(3)一次定义多个变量的格式
数据类型 变量名1,变量名2,······,变量名n;
(4)变量名字的基本要求
- 变量名字的第一字符必须是字母或者下划线 "_" ,第二个字符起可以是数字、字母或者下划线
- 变量名是区分大小写字母的,例如 y 和 Y 是两个不同的名字
- 关键字不能用于变量名
- 变量名最好能表达出变量的功能用途,做到 “见名知意”
- 变量一般是描述事物的名称,因此变量的名字建议使用 “名词” 或 “定语_名词” 的形式命名
7,运算符
(1)算数运算符
- + 加法
- - 减法
- * 乘法
- / 除法(两个整数相除,结果是整数)
- % 求余数
(2)关系运算符
- > 大于
- < 小于
- == 等于
- >= 大于或等于
- <= 小于或等于
- != 不等于
(3)逻辑运算符
- && 逻辑与 /且
- || 逻辑或
- ! 逻辑非,属于一元运算符
(4)赋值运算符
- = 把等号右边的值保存到等号左边的变量
- += 加赋值运算符
(5)成员运算符
- . 结构成员运算符
- -> 间接成员运算符
(6)一元(单目)/三元(三目)运算符
- & 求出变量在内存中的地址,属于一元运算符
- * 引用指针所指对象的内容,属于一元运算符
- ++ 自增 1运算符,属于一元运算符
- -- 自减 1运算符,属于一元运算符
- - 相反数运算符,属于一元运算符
- ? : 条件运算符,属于三元运算符
8,运算符优先级
分为15个级别
9,分支结构
- if 语句的最简形式
if( 表达式 ){ 语句 }
- if 语句的完整形式
if( 表达式 ){ 语句 1 }else{ 语句 2 }
- if 语句的扩展形式
if( 表达式1 ){ 语句 1 }else if( 表达式2 ){ 语句 2 }else if( 表达式n ){ 语句 n }else{ 语句 n+1 }
- switch...case 语句
switch( 表达式 ){ case 整数 1 : 语句 1 break; case 整数 2 : 语句 2 break; case 整数 n : 语句 n break; default : 语句 n+1 }
10,循环结构
- while 语句
while( 表达式 ){ 语句 }
- for 语句
for( 表达式1; 表达式2; 表达式3 ){ 语句 }
- do...while 语句
do { 语句 } while( 表达式 );
11,函数
- 函数定义
数据类型 函数名字 ( 数据类型1 形式参数1, 数据类型2 形式参数2, ······) { // 函数体 }
- 函数调用
某个变量 = 函数名字( 实际参数1, 实际参数2, ······ );
函数名字( 实际参数1, 实际参数2, ······ );
- 函数原型声明
数据类型 函数名字 ( 数据类型1 形式参数1, 数据类型2 形式参数2, ······);
12,数组
- 定义一维数组
数据类型 数组名 [ 元素个数 n ];
- 定义一维数组并初始化
数据类型 数组名 [ 元素个数 n ] = { 第0个元素, 第1个元素, ······, 第k个元素 };
- 访问一维数组的元素
数组名[ 下标i ]
- 定义二维数组
数据类型 数组名 [ 行数量R ][ 列数量C ];
- 定义二维数组并初始化
数据类型 数组名 [ 行数量R ][ 列数量C ] = {
{ 第0行0列元素, 第0行1列元素, ······, 第0行n列元素 },
{ 第1行0列元素, 第1行1列元素, ······, 第1行n列元素 },
······
{ 第m行0列元素, 第m行1列元素, ······, 第m行n列元素 }
};
- 访问二维数组的元素
数组名[ 行下标 ][ 列下标 ]
- 变长数组
使用整数类型的变量定义数组的大小,并在程序运行时才确定数组的大小
13,结构体
- 定义结构体类型
struct 结构体名字 { 第1个成员; 第2个成员; ······ 第n个成员; }
- 定义结构体变量
struct 结构体名字 变量名字;
- 定义结构体变量并初始化
struct 结构体名字 变量名字 = { 数据1, 数据2, ······, 数据k };
- 访问结构体变量的成员
结构体变量名字.成员
- 访问结构体指针的成员
( * 指向结构变量的指针名字 ).成员
指向结构变量的指针名字 -> 成员
14,指针
- 定义指针
数据类型 * 指针变量 ;
- 定义指针并初始化
数据类型 * 指针变量 =& 其他变量;
- 引用指针所指向对象的内容
*指针变量
15,标准库函数
(1)< stdio.h >
- fopen() 打开文件
- fclose() 关闭文件
- printf() 输出数据到屏幕中
- fprintf() 输出数据到文本文件中
- sprintf() 输出数据到字符数组中
- scanf() 从键盘输入数据
- fscanf() 从文本文件输入数据
- fwrite() 输出数据到二进制文件中
- fread() 从二进制文件输入数据
- feof() 检测是否到达文件末尾
- fseek() 移动文件的读写 “光标”
(2)< string.h >
- strcmp() 比较两个字符串是否相等
- strcpy() 复制字符串
(3)< math.h >
- abs() 求绝对值
- sqrt() 求算术平方根
(4)< stdlib.h >
- rand() 产生随机数
- srand() 设置随机数种子
- malloc() 分配内存空间
- free() 释放内存空间
- exit() 结束整个程序
(5)< time.h >
- time() 获取计算机当前的时间
16,函数 printf() 的格式说明符
- %c 输出 ASCII 码字符
- %d 以十进制形式输出 int 类型的整数
- %lld 以十进制形式输出 long long 类型的整数
- %Md 以十进制形式输出 int 类型的整数,要求输出 M 位宽度
- %0Md 以 M 位十进制形式输出 int 类型的整数,若位数不足则使用 0 补足
- %o 以八进制形式输出 int 类型的整数
- %x 以十六进制形式输出 int 类型的整数,字母 a~e 使用小写形式
- %X 以十六进制形式输出 int 类型的整数,字母 A~E 使用大写形式
- %p 按照 %X的格式输出十六进制形式的地址,并使用前导 0 补足不足的位数
- %f 输出 float 和 double 类型的浮点数
- %.Nf 输出 float 和 double 类型的浮点数,要求输出 N 位小数
- %M.Nf 输出 float 和 double 类型的浮点数,要求输出 M 位总宽度以及 N 位小数
- %s 输出字符串
- %Ms 输出字符串,并指定宽度为 M 个字符,若宽度不足,则使用空格补足
- %% 输出一个百分号 “%”
17,函数 scanf() 的格式说明符
- %c 输入 ASCII 码字符
- %d 以十进制形式输入 int 类型的整数
- %lld 以十进制形式输入 long long 类型的整数
- %o 以八进制形式输入 int 类型的整数
- %x 以十六进制形式输入 int 类型的整数
- %f 输入 float 类型的浮点数
- %lf 输入 double 类型的浮点数
- %s 输入字符串
- %Ms 输入字符串,并指定最多输入 M 个字符
18,换码序列
- \n 换行符,即 Enter 键
- \t 制表符,即 Tab 键,可以实现每列数据左对齐
19,预编译指令
- # include 引用一个文件
- # define 定义宏替换
相关/转载:
1,《C语言程序设计案例教程》附录 知识点汇总

浙公网安备 33010602011771号