目录
1. 指针变量的定义、初始化及解引用
- 解决的问题
- 变量的寻址方式哪有几种?
-
何为指针?如何定义指针类型的变量?
-
如何访问指针变量指向的存储单元中的数据?
- 指针:内存地址
- C的高效、高能主要来自于指针
- 强转与指针,并称C语言的两大神器
- 黑客攻击服务器利用的bug绝大部分都是指针和数组造成的
- 内存地址
- 内存中的每个字节都有唯一的编号
-
内存地址字长一般与主机相同,32位机使用32位地址,最多支持232字节内存(4G)
-
地址是一个无符号整数,从0开始,依次递增
- 直接寻址:直接到变量名标识的存储单元中读取变量的值
- 间接寻址:通过其他变量间接找到变量的地址读取变量的值
- 访问指针变量指向的存储单元中的数据
- 指针类型
- int *pa = &a;
- 存放变量地址的变量类型,也是具有指针类型的变量
- 基类型:指针变量指向的数据类型(int)
- 指针变量的内容:&a,指针变量pa是变量a的指针
- 使用%p格式符显示变量地址:printf("&a=%p\n", &a);
- 指针的初始化
- 指针变量使用之前必须初始化,可将其初始化为NULL(在stdio.h中定义为0)
- 空指针——值为NULL的指针,即无效指针
- 空指针不一定是指向地址为0的存储单元的指针
- 并非所有编译器都使用0地址
-
某些编译器为空指针使用不存在的内存地址
-
- 指针变量使用之前必须初始化,可将其初始化为NULL(在stdio.h中定义为0)