当前位置: 首页 > news >正文

指针进阶(多级指针)

0.多级指针命名

        多级指针命名,最主要的是要知道该指针指向的是什么数据。

        一.1级指针 - 指向一个变量

                若定义一个变量 int a,那么 目标类型就为 int。

                所以该指针应该定义为 int *p;

/* 目标 */
int a;/* 目标类型 *p */
int *p;/* 指向目标 */
p = a;

二.2级指针

        若定义一个一级指针 int *p1,那么目标类型就为 int *

        定义一个二级指针,使其指向 p1,该指针应该为 int * *p;

int a = 0;/* 目标 */
int *p1 = &a;/* 目标类型 *p */
int* *p2;/* 二级指针,存的是一级指针的地址 */
p2 = &p1;

        

三.二级指针与指针数组

         p[] 里面存储了数组元素 a[0] 、a[1] 的地址;q 存储了数组元素 p[0] 的地址;

        (1).数组 p[] 来表示 a[1] 的值

                        ①.p[1] 存储了 a[1] 元素的地址;

                        ②.对 p[1] 元素进行解引用,则得到 a[1] 的值;

        (2).用指针 q 来表示 a[1] 的值

                        ①.q 存储了 p[0] 的地址,所以第一步 *(p+1) 得到 p[1] 的值;

                        ②. p[1] 存储了 a[1] 元素的地址,即 *(p+1) 表示 a[1] 的地址

                        ③.对 *(p+1) 进行解引用 **(p+1) 得到 a[1] 的值

    int a[] = {3,6,9};int *p[] = {&a[0],&a[1]};int* *q = &p[0];    //等价于 int* *q = p;printf("a[1] : %d\n",a[1]);printf("a[1] : %d\n",*p[1]);printf("a[1] : %d\n",**(q + 1));return 0;


http://www.mrgr.cn/news/15810.html

相关文章:

  • C语言入门基础知识(持续更新中)
  • 第十四章 rust集合库介绍
  • JS模块化
  • Redis缓存穿透、缓存击穿与缓存雪崩的详细讲解和案例示范
  • Django+Vue花卉商城系统的设计与实现
  • 逐行输出三个顺序表中共同存在的元素
  • winform中chart的Axis.LabelStyle 属性
  • sqlite数据插入效率
  • 集成电路学习:什么是CRC循环冗余校验
  • cucumber 怎么启动API
  • 对mozjpeg中的函数名进行替换
  • 用矩阵乘法的底层原理来理解“特征融合”
  • Android强制设置所有应用显示方向,忽略应用本身的设置
  • 【面试题系列Vue06】Vue 单页应用与多页应用的区别
  • 损失函数、成本函数cost 、最大似然估计
  • 五,Spring Boot中的 Spring initializr 的使用
  • Runway删库跑路,真的run away了!
  • net6 core 接入nacos 实现服务注册入门使用,心跳检测和负载均衡
  • 从零开始:全面掌握C++ Qt开发框架基础
  • C#——扩展方法