取地址与解引用|取地址与解引用 C指针浅析

C语言指针入门需要掌握的两个概念就是取地址&和解引用*,下面我们按例子来理解这两个符号的使用。

int main() { int a = 0; int* pa = &a; //取地址操作:将int变量a的地址放入pa指针中。 *pa = 1; //解引用操作,使用*pa得到了int指针pa指向变量a的值。然后我们将它改成1. printf("%d ", a); //测试打印,结果为1. }

这里我们仔细看一下。
1.声明int类型的变量a,初始化为0;
2.取a的地址,存入int指针pa中,注意,这里int *pa 就只是声明的一个int类型的指针用于存放我们取的a的地址。后面的解引用操作虽然符号一样,但理解上不一样。
int main() { int a = 0; int* pa = &a; //取地址操作:将int变量a的地址放入pa指针中。 printf("%d ", *pa); //测试打印,结果为0; }


3.*pa:解引用操作,直接通过pa中的地址使用 * (解引用操作)获取到a的值。可以看看上面的代码,自己跑一下。这里*pa打印出来直接就是我们第一个声明的a的值,这就是解引用操作:通过地址直接获取相应变量中存储的值。所以这里打印的值为0.
4.我们这里解引用之后多了一个赋值操作,*pa=1,因此,a中的变量的值被直接修改为1,打印结果为1。这一步很关键。
取地址是取出指定变量的地址,通常需要一个相应类型的指针变量来存储。这个时候,这个指针里面就存储的是我们目标变量的地址。这时,取地址操作就已经完成。解引用就是顺着这个地址去取值,或者是去修改值,就像上面的例子所说的那样。这个过程稍显晦涩难懂,还请读者大大细细思考,后面我会继续更新指针相关的内容。
【取地址与解引用|取地址与解引用 C指针浅析】

    推荐阅读