指针进阶(多级指针)

2024-08-31 04:44
文章标签 进阶 指针 多级

本文主要是介绍指针进阶(多级指针),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/1122917

相关文章

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4