knowledge_c
knowledge_c
1 十进制、八进制和十六进制的表示
首先,十进制 decimalism [ˈdesɪməlɪzəm];八进制 octonary [ˈɑːktəˌneri];十六进制 hexadecimal[ˌheksəˈdesɪml]
- 十进制
- 表示:没有任何前缀,默认是十进制
- 显示:使用%d(常用于pringf()函数中)
- 额外显示前缀:无
- 八进制
- 表示:加上前缀0(数字0)
- 显示:使用%o(小写字母o)(常用于pringf()函数中)
- 额外显示前缀:使用%#o(常用于pringf()函数中)
eg. 010
- 十六进制
- 表示:加上前缀0x或0X(数字0,小写字母x或大写字母X)
- 显示:使用%x(小写字母x)(常用于pringf()函数中)
- 额外显示前缀:使用%#x 或 %#X(常用于pringf()函数中)
eg. 0x10 0X10
2 形参和实参
3 运算符的优先级
4 ctype.h头文件中的字符测试函数
5 else和if配对的规则
6 求值顺序
7 printf()的转换说明
%lf double
%ld long int
8 什么是函数原型?
ANSI C标准要求在函数声明时,还要声明变量的类型,即 使用 函数原型(function prototype)来声明函数的返回类型、参数的数量和每个参数的类型。
9 函数的声明和定义
ANSI C标准中的函数声明格式有以下2种:
int imax(int, int);
int imax(int a, int b);
第一种形式使用以逗号分隔的类型列表,第2种形式在类型后面添加了变量名。注意,这里的变量名是假名,不必与函数定义的形式参数名一致。
note:
- 如果函数中确实没有参数,应该这么声明: void imax(void); 而不是 void imax();
- 如果函数中参数不固定,如printf(),可以这么声明:int printf(const char *, ...);
10 函数签名
函数的返回类型和形参列表构成了函数签名。
11 指针
指针(pointer)是一个值为内存地址的变量(或数据对象)。
-
&(地址运算符)
后面跟一个变量名时,给出该变量的地址。
eg. ptr = &pooh; // 把pooh的地址赋给ptr
ptr是指针变量, &pooh 是指针常量 -
*
(地址运算符/间接运算符)
后面跟一个指针名或地址时,给出存储在指针指向地址上的值。
假设已知 ptr = &bah; 则可以使用以下语句获取存储在bah变量中的值:
val = *ptr; // 找出ptr指向的值
ptr = &bah; val = *ptr;
这2条语句可以合并起来,相当于 val = bah;
12 块作用域的变量的存储期
块作用域的变量通常都具有自动存储期。当程序进入定义这些变量的块时,为这些变量分配内存;当退出这个块时,释放刚才为变量分配的内存。即,从块的开始处到块的末尾。
变长数组稍有不同,它们的存储期是从声明开始处到块的末尾,并不是从块的开始处到块的末尾。
13 初始化
普通变量:仅仅声明,不初始化,那么其值不确定,因为是之前分配给该内存的一个值。
static声明的变量(即,静态变量):仅仅声明,不显式初始化,那么其值被自动初始化为0。