指针基础
#C
2024-09-09
指针和指针变量
指针是地址,指针变量是存储地址的变量。
如下图为,指针变量 p 指向 变量 i 的地址。

取地址运算符和间接寻址运算符
1 |
|
& 获取变量的地址,* 对指针变量解引用。
你可以看到 & 和 *
是互相抵消的关系,如上述代码中*p = *&num = num
。
只要 p 指向 num,p 就是 num 的别名。p 不仅拥有和 num 相同的值,而且对 p 的改变也会改变 num 的值。(p 是左值,所以对它赋值是合法的。)
指针赋值
1 |
|
两个指针,对于不同的赋值方式含义也是不同的。
p = m
是指针赋值,即 指针变量p 原来指向变量
num1的地址,现在和 指针变量m 一起指向 变量 num2。

*p = *m
是把 m 指向的值(num2 的值)复制到 p
指向的对象(变量num1)中。

至此,我们可以说改变 变量的值有两种方式,一个是修改所指向的对象,一个是修改所指向的对象存储的值。切记弄清楚两种赋值方式的区别。