参考:C 指向指针的指针

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

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

int **var;

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

  • var:int 变量
  • ptr:指向 var 的指针
  • pptr:指向 ptr 的指针
  • 表示 var 值的三种方法:
    • var
    • *ptr:ptr 指针所对应的值,即 var
    • **pptr:*pptr 指针所对应的值,即 ptr,所以 **pptr = *ptr = var
  • 表示 ptr 值(var 地址,pptr 对应的值)的四种方法:

    • &var:表示 var 的地址,即 ptr
    • ptr
    • &(*ptr):*ptr 相当于 var
    • *pptr:*pptr 指针所对应的值,即 ptr,所以 *pptr = ptr = &var
  • 表示 pptr 值(ptr 地址)的三种方法:

    • &ptr:表示 ptr 的地址,即 pptr
    • pptr
    • &(*pptr):*pptr 相当于 ptr
  • 表示 pptr 地址的方法:

    • &pptr
#include <stdio.h>

int main() {
int var;
int *ptr;
int **pptr; var = 3000; ptr = &var; pptr = &ptr; printf("Value of var = %d\n", var );
printf("Value available at *ptr = %d\n", *ptr );
printf("Value available at **pptr = %d\n", **pptr); printf("\n"); printf("Address of var: &var = %p\n", &var);
printf("Address of var: ptr = %p\n", ptr);
printf("Address of var: &(*ptr) = %p\n", &(*ptr));
printf("Address of var: *pptr = %p\n", *pptr); printf("\n"); printf("Address of ptr: &ptr = %p\n", &ptr);
printf("Address of ptr: pptr = %p\n", pptr);
printf("Address of ptr: &(*pptr) = %p\n", &(*pptr)); printf("\n"); printf("Address of pptr: &pptr = %p\n", &pptr); return 0;
}

Outputs:

Value of var = 3000
Value available at *ptr = 3000
Value available at **pptr = 3000 Address of var: &var = 0x7ffff21a1b64
Address of var: ptr = 0x7ffff21a1b64
Address of var: &(*ptr) = 0x7ffff21a1b64
Address of var: *pptr = 0x7ffff21a1b64 Address of ptr: &ptr = 0x7ffff21a1b68
Address of ptr: pptr = 0x7ffff21a1b68
Address of ptr: &(*pptr) = 0x7ffff21a1b68 Address of pptr: &pptr = 0x7ffff21a1b70

【424】C语言二级指针的更多相关文章

  1. C语言 二级指针内存模型①

    //二级指针第一种内存模型 #include<stdio.h> #include<stdlib.h> //说明:①:类似于int a[5]={0},数组名a是一维数组a中首元素 ...

  2. 真正明白C语言二级指针(转载)

    指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的 ...

  3. C语言二级指针(指向指针的指针)

    转载:http://c.biancheng.net/cpp/html/85.html 指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 in ...

  4. 真正明白c语言二级指针

    指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的 ...

  5. C语言二级指针底层实现

    C语言中,Pointers to Pointers,即二级指针. 一级指针和二级指针的值都是指向一个内存单元: 一级指针指向的内存单元存放的是源变量的值, 二级指针指向的内存单元存放的是一级指针的地址 ...

  6. C语言 二级指针内存模型混合实战

    //二级指针内存模型混合实战 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #i ...

  7. C语言 二级指针内存模型③

    //二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #incl ...

  8. C语言 二级指针内存模型②

    //二级指针第二种内存模型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #incl ...

  9. c语言二级指针内存模型

    第一种: 指针数组作为输入参数 char *myArray[] = {"aaaaaa", "ccccc", "bbbbbb", " ...

  10. C语言二级指针间接赋值

    重要意义:间接赋值的意义,实现了模块的功能划分,实现了软件作品的分层,使得模块接口和信息系统得以实现. 所谓二级指针就是指向指针的指针,其声明形式如下 int *p=NULL int **p1=NUL ...

随机推荐

  1. Maven配置环境变量

    Windows: 1:新建系统M2_HOME变量,并把安装maven路径拷贝上去 ​ 2:配置path变量,并把maven路径拷贝上去,这次的maven路径到bin ​ 3:测试maven环境是否配置 ...

  2. G1垃圾收集器角色划分与重要概念详解【纯理论】

    继续接着上一次[https://www.cnblogs.com/webor2006/p/11129326.html]对G1进行理论化的学习,上一次学到了G1收集器的堆结构,回忆下: 接着继续对它进行了 ...

  3. TListView控件的ReadOnly属性的一个Bug

    不知道是不是ListView的 ReadOnly属性的一个bug 1.Form上一个ListView,如图设置 2.在FormCreate事件中写如下代码:     ListView1->Rea ...

  4. 大数据之路week06--day07(Hadoop生态圈的介绍)

    Hadoop 基本概念 一.Hadoop出现的前提环境 随着数据量的增大带来了以下的问题 (1)如何存储大量的数据? (2)怎么处理这些数据? (3)怎样的高效的分析这些数据? (4)在数据增长的情况 ...

  5. springboot+支付宝完成秒杀项目的初体验

    springboot+支付宝完成秒杀项目的初体验 思考的问题: 首先是秒杀的商品查询,考虑到是热点数据,所以写一个接口读取当日批次的秒杀商品到redis中(那么接下来对商品的操作都放入redis中). ...

  6. 使用Scrapy框架爬取腾讯新闻

    昨晚没事写的爬取腾讯新闻代码,在此贴出,可以参考完善. # -*- coding: utf-8 -*- import json from scrapy import Spider from scrap ...

  7. Java位运算总结:位运算用途广泛

    前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...

  8. jquery关于多个显示隐藏

    今天做了一个关于多个栏目的隐藏与显示,内容为初始化显示6个栏目,点击按钮显示所有的栏目,在次点击隐藏出现的栏目 <div class="ftlt_z_navigation acer&q ...

  9. SQL:SQL Broker

    -- ============================================= --启用 Broker USE master; GO ALTER DATABASE DEV_AMS S ...

  10. @select注解中可以用条件构造器

    https://mp.baomidou.com/guide/wrapper.html#lambda https://blog.csdn.net/weixin_42236404/article/deta ...