C语言笔记整理

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