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

    xiaoxiao2023-12-19  160

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

    2.2 两颗星星:表示两把钥匙

    指针的编程艺术(第二版)接下来,讨论两个*的用法,这好比需要两把钥匙才能得到信箱内的信件,如范例twoPointer所示。

    范例twoPointer

    /* twoPointer.c */ #include <stdio.h> #include <conio.h> int main() {   int x = 100;   int *p1 = &x;   int **p2 = &p1;   printf("变量定义如下: \n");   printf("int x = 100;\nint *p1 = &x;\nint **p2 = &p1;\n\n");   printf("&x=%p\n", &x);   printf("&p1=%p, p1=%p\n", &p1, p1);   printf("&p2=%p, p2=%p\n\n", &p2, p2);   printf("**p2=%d, *p1=%d\n", **p2, *p1);   getch();   return 0; }

    输出结果

    其中

    int *p1 = &x;

    表示p1指针变量所存储的是x变量的地址,而

     `javascriptint **p2 = &p1;

    这条语句的示意图,如下所示。 <div style="text-align: center"> <img src="https://yqfile.alicdn.com/920b874c44a2761fc10071e73073a2de524cd385.png" > </div> 表示p2指针变量需要通过两次的间接访问才能得到x的值,也就是p2需具备两把钥匙才能得到信箱内的信件。因为*p2表示第一次间接得到p1变量的数据,它里面存储的是x变量的地址,此时再加上一个*,就可得到x变量的值。 这个例子好比一个人使用第一把钥匙打开信箱p1,得到的信件的内容是另一个信箱x的地址;他再拿起第二把钥匙,打开信箱x,发现里面是100元。 相关资源:敏捷开发V1.0.pptx
    最新回复(0)