目录
一、关键字typedef
typedef 顾名思义是类型定义(只能对类型),这里应该理解为类型重命名(把这个类型重新取个名字)。
typedef可以把平时复杂的类型,使用起来不方便的类型简化。
二、关键字static
static是用来修饰变量和函数的
1. 修饰局部变量-称为静态局部变量
2. 修饰全局变量-称为静态全局变量
3. 修饰函数-称为静态函数
1. 修饰局部变量-称为静态局部变量
static修饰局部变量的时候,局部变量出了作用域后,没有销毁。
本质上,static修饰局部变量的时候,改变了变量的存储位置。static修饰局部变量时,影响了变量的的生命周期,使其生命周期变长,和程序的生命周期一样。
关于viod类型:
2. 修饰全局变量-称为静态全局变量
说明:static修饰全局变量的时改变了全局变量的链接属性。即static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性。其他源文件就不能再使用到这个全局变量了。
我们在使用g_val的时候,感觉它的作用域变小了,实际上上是把它的的外部链接属性变成了内部链接属性。(因为g_val是全局变量,所以它存放在静态区)
3. 修饰函数-称为静态函数
三、关键字register
四、#define 定义常量和宏
1.#define定义标识符常量
2.#define定义宏(宏是有参数的)
五、指针
1.内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
2.变量地址
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
3.指针变量
& 取地址操作符
关于int *p=&a的理解:
* 解引用操作符
4.指针变量的大小
//指针变量的大小
//不管是什么类型的指针,都是在创建指针变量
//指针变量是用来存放地址的
//指针变量的大小取决于一个地址存放的时候需要大多空间
//32位机器上的地址:32bit位(32个01组成的二进制序列) ————32/8= 4byte,所以指针变量的大小是4个字节
//64位机器上的地址:64bit位 ————64/8= 8byte,所以指针变量的大小是8个字节
注:sizeof最后用%zu来打印。
六、结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用结构体来描述了。 例如:
. 操作符
用指针打印
->
三种方式: