为了学院的保研考试,整理遗忘的若干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)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。