为了学院的保研考试,整理遗忘的若干C语言知识点如下。
C语言保留字
| 保留字 | 含义 |
|---|---|
| break | 跳出循环或switch语句 |
| case | 定义switch中的case子句 |
| char | 定义字符型变量或指针 |
| const | 定义常量或参数 |
| continue | 在循环语句中,回到循环体的开始处重新执行循环 |
| default | 定义switch中的default子句 |
| do | 定义do-while语句 |
| double | 定义双精度浮点数变量 |
| else | 定义else语句或else if语句 |
| enum | 定义枚举类型 |
| extern | 声明外部变量或函数 |
| float | 定义浮点型变量或指针 |
| for | 定义for语句 |
| goto | 定义goto语句 |
| if | 定义if语句或if-else语句 |
| int | 定义整型变量或指针 |
| long | 定义长整型变量或指针 |
| register | 指定变量的存储类型是寄存器变量,Turbo c中用自动变量代替 |
| return | 从函数返回 |
| short | 定义短整型变量或指针 |
| signed | 定义有符号的整型变量或指针 |
| sizeof | 获取某种类型的变量或数据所占内存的大小,是运算符 |
| static | 指定变量的存储类型是静态变量,或指定函数是静态函数 |
| struct | 定义结构体类型 |
| switch | 定义switch语句 |
| typedef | 为数据类型定义别名 |
| union | 定义共用体类型 |
| unsigned | 定义无符号的整型变量或数据 |
| void | 定义空类型变量或空类型指针,或指定函数没有返回值 |
| volatile | 变量的值可能在程序的外部被改变 |
| while | 定义while或do-while语句 |
转义字符
| 转义字符 | 意义 | ASCII码值(十进制) |
|---|---|---|
| \a | 响铃(BEL) | 007 |
| \b | 退格(BS) ,将当前位置移到前一列 | 008 |
| \f | 换页(FF),将当前位置移到下页开头 | 012 |
| \n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
| \r | 回车(CR) ,将当前位置移到本行开头 | 013 |
| \t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
| \v | 垂直制表(VT) | 011 |
| \ | 代表一个反斜线字符’’' | 092 |
| ' | 代表一个单引号(撇号)字符 | 039 |
| " | 代表一个双引号字符 | 034 |
| \? | 代表一个问号 | 063 |
| \0 | 空字符(NULL) | 000 |
| \ooo | 1到3位八进制数所代表的任意字符 | 三位八进制 |
| \xff | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
格式控制符
| printf格式控制符 | 含义 |
|---|---|
| d,i | 有符号十进制整数 |
| o | 无符号八进制整数(不输出前导符0) |
| x,X | 无符号16进制整数(不输出前导符0x) |
| u | 无符号十进制整数 |
| c | 输出一个字符 |
| s | 输出字符串 |
| f | 浮点数(包括float和double),包含6位小数 |
| e,E | 以指数形式输出实数(如1.2e+02/1.2E+02) |
| g,G | 选用%f或%e中较短的方式输出,不输出无意义的0 |
指针
- [ ]实际上是变址运算符
- int a[10]中的a是指针型常量,不能进行a++这样的操作。
在指针引用多维数组的情况下,务必牢记*(a+i)和a[i]是等价的。
那么,a[i][j]和*(*(a+i)+j)就是等价的。
二维数组名是指向行的。
位运算
数值在计算机中的表示
数值的原码表示
数值的原码表示是指,将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值(以二进制形式表示)的表示形式。为简化描述起见,本节约定用1个字节表示1个整数。
数值的反码表示
数值的反码表示分两种情况:
(1)正数的反码:与原码相同。
(2)负数的反码:符号位为1,其余各位为该数绝对值的原码按位取反(1变0、0变1)。
数值的补码表示
数值的补码表示也分两种情况:
(1)正数的补码:与原码相同。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
- 在计算机系统中,数值一律用补码表示(存储)。
位运算及其运算符
按位与
(1)格式:x&y
(2)规则:对应位均为1时才为1,否则为0:
(3)主要用途:取(或保留)1个数的某(些)位,其余各位置0。
按位或
| (1)格式:x | y |
(2)规则:对应位均为0时才为0,否则为1。
(3)主要用途:将1个数的某(些)位置1,其余各位不变。
按位异或
(1)格式:x^y
(2)规则:对应位相同时为0,不同时为1。
(3)主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。
按位取反
(1)格式:~x
(2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1。
(3)主要用途:间接地构造一个数,以增强程序的可移植性。
按位左移
(1)格式:x« 位数
(2)规则:使操作数的各位左移,低位补0,高位溢出
按位右移
(1)格式:x»位数
(2)规则:使操作数的各位右移,移出的低位舍弃;高位:
1)对无符号数和有符号中的正数,补0;
2)有符号数中的负数,取决于所使用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。例如,20» 2=5。
输入和输出
C语言中的实型常量都是双精度浮点型常量。
宏定义在编译时直接替换,没有括号。
例如:
#define X 5
#define Y X+1
#define Z Y*X/2
printf(“%d\n”,Z);
//Z = X+1*X/2 = 7
形式区分:
int (*a)(int, int)表示指向返回值为整型的函数的指针,该函数有两个整型参数。
float *b(void)表示返回值为指向浮点型变量的指针的函数,该函数没有参数。
long *(*c)[12]表示指向有12个指针元素的数组的长整型指针。
标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。