C++之三级指针引用篇

样例:

#include 

// 多级指针的意义是什么啊 (C的框架,再去说,比较时候)
void test1(int ** n) {}
int main() {
    // 在真实开发过程中,最多三级指针  int ***
    int num = 999;
    // 一级指针 *,指针本身有自己的内存地址
    // 1、&num代表num的内存地址,取出num的内存地址给 指针num_p   =》   int * num_p = #
    // 2、一级指针定义:int *  A ,代表是指针变量A,所以num_p是指针,
    // 3、单独的 * + 指针 代表指针的值(*num_p),而类型+ * +变量  代表定义指针int * num_p。
    // 4、*num_p代表对指针num_p进行取值,也就是*num_p对&num取值为,也就是num的值,
    int * num_p = #
    //二级指针**
    //1、定义:int ** B
    //2、指针num_p_p等于&num_p,而*num_p_p相当于对&num_p取值,也就是指针num_p的值,他的值指向&num,是个内存地址
    int ** num_p_p = &num_p; // 取出num_p的内存地址给  num_p_p(二级指针)
    //三级指针***
    //1、定义:int *** C
    //2、指针num_ppp等于,相当于值指向内存地址:&num_p_p
    //3、*num_ppp相当于对&num_p_p取值,也就是num_p_p的值,也就是&num_p,是一个内存地址,是num_p的内存地址。
    //4、**num_ppp相当于取&num_p_p的值的值,&num_p_p的值为&num_p,是num_p的内存地址,
    // 相当于再取&num_p的值也就是&num,也是内存地址,是num的内存地址
    //5、***num_ppp相当于取&num_p_p的值的值的值,&num_p_p的值为&num_p,是num_p的内存地址,
    //  第二个* 相当于再取&num_p的值也就是&num,也是内存地址,是num的内存地址
    //  第三个* 相当于再对&num取值,&num也就是num的内存地址,对他取值就是num本身的值。
    //指针本身自己有自己的内存地址
    int *** num_ppp = &num_p_p;
    printf("%p %p %p %p %p \n", num,num_p,&num_p, num_p_p,num_ppp);
    printf("%d  %d %d %p \n", *num_p, *num_p_p,**num_p_p ,*num_ppp);
    printf("num_p的值是%d  num_p_p的值是%d s %d \n", *num_p, *num_p_p,*num_ppp);
    printf("%p num_p的值是%p   num_p_p的值是%p\n",num, num_p, num_p_p);
    // num_p的值是:0061FF18, num_p_p的值是:0061FF14

    // 我先输出 999
    printf("获取最终的值:%d\n", **num_p_p);
    printf("获取最终的值:%d\n", *** num_ppp);

    // 多级指针的意义是什么啊
     test1(num_p_p);

    // printf("num_p的自己的内存地址是:%p, num_p_p自己的额内存地址是:%p\n", &num_p, &num_p_p);

    // *num_ppp  取的是什么?取的是&num_p_p的值,也就是指针num_p_p的值,也就是 &num_p
    return 0;
}


你可能感兴趣的:(C++之三级指针引用篇)