美文网首页程序员互联网科技C++
小朋友学C语言(41):二级指针与多级指针

小朋友学C语言(41):二级指针与多级指针

作者: 海天一树X | 来源:发表于2018-09-16 13:28 被阅读7次

    一、二级指针

    指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。

    1.jpg

    一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:

    int **p;
    

    当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符,如下面实例所示。

    #include <stdio.h>
    
    int main ()
    {
        int a;
        int *ptr;
        int **pptr;
    
        a = 100;
    
        /* 获取 a 的地址 */
        ptr = &a;
    
        /* 使用运算符 & 获取 ptr 的地址 */
        pptr = &ptr;
    
        /* 使用 pptr 获取值 */
        printf("Value of a = %d\n", a);
        printf("Value available at *ptr = %d\n", *ptr );
        printf("Value available at **pptr = %d\n", **pptr);
    
        return 0;
    }
    

    运行结果:

    Value of a = 100
    Value available at *ptr = 100
    Value available at **pptr = 100
    

    可以进一步查看一下指针的地址:

    #include <stdio.h>
    
    int main ()
    {
        int a;
        int *ptr;
        int **pptr;
    
        a = 100;
    
        /* 获取 a 的地址 */
        ptr = &a;
    
        /* 使用运算符 & 获取 ptr 的地址 */
        pptr = &ptr;
    
        /* 使用 pptr 获取值 */
        printf("Value of a = %d\n", a);
        printf("Value available at *ptr = %d\n", *ptr );
        printf("Value available at **pptr = %d\n", **pptr);
    
        printf("\nAddress of a is %p\n", &a);
        printf("Address of *ptr is %p\n", &(*ptr));
        printf("Address of **ptr is %p\n\n", &(**pptr));
    
        printf("Address of ptr is %p\n", &ptr);
        printf("Address of pptr is %p\n", &pptr);
    
        return 0;
    }
    

    运行结果:

    Value of a = 100
    Value available at *ptr = 100
    Value available at **pptr = 100
    
    Address of a is 0061ff0c
    Address of *ptr is 0061ff0c
    Address of **ptr is 0061ff0c
    
    Address of ptr is 0061ff08
    Address of pptr is 0061ff04
    

    二、多级指针

    既然有一级指针和二级指针,就有三级指针、四级指针、五级指针……
    以三级指针为例,三级指针是“指针的指针的指针”,或者叫“指向‘指向指针的指针’的指针”。
    因为多级指针不好理解,并且在编程时容易写错,所以建议尽量不要使用二级以上的指针。

    了解小朋友学编程请加QQ307591841(微信与QQ同号),或QQ群581357582。
    关注公众号请扫描二维码


    qrcode_for_kidscode_258.jpg

    相关文章

      网友评论

        本文标题:小朋友学C语言(41):二级指针与多级指针

        本文链接:https://www.haomeiwen.com/subject/koaxnftx.html