《指针的编程艺术(第二版)》一2.3 三颗星星:表示三把钥匙

    xiaoxiao2024-10-01  61

    本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第2章,第2.3节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.3 三颗星星:表示三把钥匙

    指针的编程艺术(第二版)最后,我们介绍3个*的用法作为本章的结尾。请看范例threePointer。

    范例threePointer

    /* threePointer.c */ #include <stdio.h> #include <conio.h> int main() {   int x = 100;   int *p1 = &x;   int **p2 = &p1;   int ***p3 = &p2;   printf("变量定义如下: \n");   printf("int x=100;\nint *ptr=&x;\nint **p2=&p1;\nint ***p3=&p2\n\n");   printf("&x=%p\n", &x);   printf("&p1=%p, p1=%p\n", &p1, p1);   rintf("&p2=%p, p2=%p\n", &p2, p2);   printf("&p3=%p, p3=%p\n\n", &p3, p3);   printf("以下的方法可得到 100: \n");   printf("***p3=%d, **p2=%d, *p1=%d, x=%d\n", ***p3, **p2, *p1, x);   getch();   return 0; }

    输出结果

    程序中变量的含义,用示意图表示如下。

    p3指针变量需经过3次的间接访问才能得到x变量的值,也就是p3需具备三把钥匙才能得到信箱内的信件。*p3的操作过程与范例twoPointer的操作过程相同。

    一开始p3指向变量p2的地址,所以p3表示第一次间接得到变量p2的内容,里面存储的是变量p1的地址;再加上一个,如p3,表示第二次间接得到变量p1的内容,里面存储的是x变量的地址;再加上一个,如p3,表示第三次间接得到x变量的内容,它里面存储的是100。

    这个例子好比一个人拿第一把钥匙打开信箱p2得到的信件,其内容是另一信箱p1的地址。然后,拿第二把钥匙打开信箱p1得到的信件,其内容是另一信箱x的地址。最后,他拿起第三把钥匙,打开信箱x,发现里面放了100元。

    具有3个指针的变量,需要有3个*才能得到变量值,否则,得到的都是变量的地址。

    最新回复(0)