
- 指针
让程序更简洁高效,提供了间接访问变量的方式- 基本概念
- 地址
用来区分不同内存字节空间的编号
- 指针
指针就是地址,地址就是指针,地址是编号,指针比地址多了指向的概念
- 指针变量
一个用来存放指针(地址)的变量,使用变量即使用指针
- 地址
- 指针相关运算符
- &
获得变量在内存空间中的首地址- 注意事项
- 只能对变量操作
- 连接表达式的结果为该变量在内存空间中的首地址
- 会让类型升级
- 注意事项
- *
获得指针所指向内存地址中的值- 用于左值时:将右值放入指针所指向的空间
- 用于右值时:直接取指针对应空间的值
- 注意事项
- 只能对指针进行*操作
- *会让类型降级
- *和&互逆
- &
- 指针变量
指针均占8字节(64位系统中)
注意不要使用未经初始化的指针- 野指针
未经初始化的指针或已被释放空间的指针
- 野指针
- 指针初始化
- int *p =NULL
NULL:指向内存地址为0x0的指针
- int *p =NULL
- 指针的运算
- +, -, ++, --
++:向内存高地址偏移指向数据类型大小个字节空间
--:向内存低地址偏移指向数据类型大小个字节空间
- +, -, ++, --
- 常见操作
- p = &b;
- *p = b;
- p = q;
- *P = *q
- 指针作为函数参数
- 地址传递
实参将地址传递给形参,形参是实参的指针,通过对形参取*改变实参的值
函数体内部想修改函数体外部的值时使用地址传递
- 地址传递
- 指针与数组
- 数组的数组名是指向数组第一个元素的指针常量
a == &a[0]
- 访问下标为n的元素
指针[偏移量] == *(指针+偏移量)a[n] == *(a+n) == *(p+n) == p[n]
- 数组的数组名是指向数组第一个元素的指针常量
- 数组作为函数参数
int fun(int *parray, int len)
- 基本概念





