- 结构是 C 编程中另一种用户自定义的可用的数据类型,它允许可以存储不同类型的数据项。定义结构,您必须使用 struct 语句。
struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
} book = {"C 语言", "RUNOOB", "编程语言", 123456};
- 共用体:跟结构体类似,用union关键字声明
union Data{
int i;
float f;
char str[20];
} data;
-
C语言类型限定符
const:对象的类型如果采用了限定符 const,则该对象就是常量。在定义该对象之后,程序无法修改它。 - C语言内存模型详解
- p++是 地址会变化。 口诀:取当前值,然后再移动地址!
(*p)++ 是数值会要变化。 口诀:取当前值,然后再使数值增加1。
例题:int *p,a[]={1,3,5,7,9};
p=a;
请问 * p++和(* p)++的数值分别为多少?
*p++: 这个本身的数值为1。由于是地址会增加一,所以指针指向数值3了。
(*p)++ 这个本身的数值为1。由于有个++表示数值会增加,指针不移动,但数值1由于自加了一次变成了2。
- 类型重命名:
typedef char* va_list; - define a 1+2
- 2.333e-1 就是合法的,且数据是2.333×10-1
- 八进制转义字符: ‘\141’ 是合法的, 前导的0是不能写的。
十六进制转义字符:’\x6d’ 才是合法的,前导的0不能写,并且x是小写。
10、变长参数
- 有可能无法确定参数的个数,这是就需要用到变长参数函数,就像标准C函数printf一样。一般这样声明:
void func(char* form, ...); - 前面至少有一个确定的参数。函数体内如何获取这些参数呢?
函数参数是以数据结构——栈的形式存取,从右至左入栈。因此,从理论上说,我们只要探测到任意一个变量的地址,并且知道其他变量的类型,通过指针移位运算,则总可以找到其他的变量。
11、静态变量: static变量及其作用
12、从变量的作用域角度看,变量可分为几种?
- 按照变量的作用域来分,变量可分为两种, 即局部变量和全局变量.
局部变量也称为内部变量.局部变量是在函数内作定义说明的.其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的. - 全局变量也称为外部变量,它是在函数外部定义的变量. 它不属于哪一个函数,它属于一个源程序文件.其作用域是整个源程序。