20240310 - 指针
认识指针
指针是对象的内存地址
指针变量
声明
cpp
<type> *<pointer> = <&<normal_var> | NULL>;
赋值
取值 (获取指针):
cpp
[<pointer> =] &<var_name>;
赋空值 (避免野指针):
cpp
<type> *<pointer> = NULL;
读取值
把指向的值读取
cpp
*<var_name>;
取地址符
运算规则: 右结合律, 优先和右侧表达式结合
指针运算
cpp
int a = 0;
int *p = &a;
p++; // 向后跳转一个 int 大小 (一般为 4 bits)
使用指针运算
如果使用值传入内存占用较大内容, 浪费内存. 使用指针替代可避免上述情况.
cpp
int a=1, b=2;
int *t, *pa, *pb;
t = pa; pa = pb; pb = t; // 交换, 现在 a, b 分别为 2, 1
数组地址
NOTE
注意: 数组不可运算, 诸如 array++;
会报错 (其中, array
为任意数组)
直接赋值即可, 且 +1 步长为其类型大小 (如: int[]
步长为 4
)