Skip to content

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)