指针传2

news2024/11/23 7:17:51

几天没有写博客了,怎么说呢?这让我总感觉缺点什么,心里空落落的,你懂吧!

好了,接下来开始我们今天的正题!

 1. ⼆级指针 

我们先来看看代码:

首先创建了一个整型变量a,将a的地址取出来存放在p中,之后我们又创建了一个指针变量pp来取出p的地址进行存放,右边一个*表示pp是一个指针变量,左边的int*则表示pp所指向的对象类型是int*的。那么我们通过对pp的解引用也改变了a的值。

**pp 先通过 *pp 找到 ,然后对 进⾏解引⽤操作: *p ,那找到的是 a

2. 指针数组

什么是指针数组呢?我们可以类比得出,前面我们又整型数组:是存放整型的数组,字符数组:是存放字符的数组,那么指针数组:就是存放指针的数组了!指针数组的每个元素都是⽤来存放地址(指针)的。

p[i]是访问p数组的元素,p[i]找到的数组元素指向了整型⼀维数组,p[i][j]就是整型⼀维数
组中的元素。
int* p[5]就是指针数组,p表示指针数组变量名,p指向对象有5个元素,*表示p所指向的对象是指针变量,int则表示p所指向的对象为整型。

3. 数组指针变量

上面我们学习了指针数组,指针数组是⼀种数组,数组中存放的是地址(指针)。
那么我们的数组指针呢存放的应该是数组的地址,能够指向数组的指针变量。
我们来看看下面哪一个是数组指针:
1   int *p1[10];
2   int (*p2)[10];
答案是我们的2咯, p先和*结合,说明p是⼀个指针变量,然后指向的是⼀个⼤⼩为10整型的数组。所以 p是⼀个指针,指向⼀个数组,叫数组指针。
注:[]的优先级要⾼于*号的,所以必须加上()来保证p先和*结合。

p是数组指针变量名

有了数组指针的理解,我们就能够讲⼀下⼆维数组传参的本质了。以前我们进行二维数组传参时,我们函数写的都是数组类型进行接收。二维数组其实的存储方式也是连续的,所以对于二维数组我们可以看成是一维数组的数组arr[0](arr则可以看成另一个一维数组)。
根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀ ⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。

 我们看见确实可以实现,总结:⼆维数组传参,形参的部分可以写成数组,也可以写成指针形式


4. 函数指针变量

函数指针变量是⽤来存放函数地址的
函数有地址吗?

那么我们确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过 &函数名的方式获得函数的地址。如果我们要将函数的地址存放起来,就得创建函数指针变量,函数指针变量的写法就和数组指针非常类似。

 可以看见两种写法都是可以的哈,

 


分享两个有趣的代码:

1 (*(void (*)())0)();
void (*signal(int , void(*)(int)))(int);

 你知道它们各自代表的含义吗?

今天就到这里咯,咱们明天见,拜拜!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 简单的语法

1.插值表达式 1.插值表达式的作用是什么? 利用表达式进行插值,将数据渲染到页面中; 2.语法结构? {{表达式}} 3.插值表达式的注意点是什么? (1)使用的数据要存在,在data中&…

Java基础(第七期):Java面向对象和类 类的封装 Java构造器 JavaBean标准

Java基础专栏 Java基础(第七期) 面相对象 面向对象(Object-oriented)是一种编程思想和方法,它将程序的设计和组织建立在对象的概念上。在Java中,每个对象都是类的一个实例,而类定义了相同类型对…

【机器学习6】概率图模型

用观测结点表示观测到的数据, 用隐含结点表示潜在的知识, 用边来描述知识与数据的相互关系, 最后基于这样的关系图获得一个概率分布 。 概率图中的节点分为隐含节点和观测节点, 边分为有向边和无向边。 从概率论的角度&#xff0c…

使用pixy计算群体遗传学统计量

1 数据过滤 过滤参数:过滤掉次等位基因频率(minor allele frequency,MAF)低于0.05、哈达-温伯格平衡(Hardy– Weinberg equilibrium,HWE)对应的P值低于1e-10或杂合率(heterozygosit…

想买GPT4会员却只能排队?来看看背后的故事!

文章目录 🧐 为什么要进候选名单?🔍 究竟发生了什么?😮 IOS端还能买会员!🤔 网页端为啥不能订会员?第一点:防止黑卡消费第二点:当技术巨头遇上资源瓶颈&#…

2023.11.16-hive sql高阶函数lateral view,与行转列,列转行

目录 0.lateral view简介 1.行转列 需求1: 需求2: 2.列转行 解题思路: 0.lateral view简介 hive函数 lateral view 主要功能是将原本汇总在一条(行)的数据拆分成多条(行)成虚拟表,再与原表进行笛卡尔积&#xff0c…

Uniapp导出的iOS应用上架详解

目录 Uniapp导出的iOS应用上架详解 摘要 引言 苹果审核标准 苹果调试 注意事项和建议 总结 摘要 本文将探讨Uniapp导出的iOS应用能否成功上架的问题。我们将从苹果审核标准、性能影响、调试流程等多个方面进行深入分析,以及向开发者提供相关注意事项和建议。…

安防监控系统EasyCVR平台调用hls地址生成流的时间过长,该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…

Mybatis-Plus条件构造器QueryWrapper

Mybatis-Plus条件构造器QueryWrapper 1、条件构造器关系介绍 介绍 : 上图绿色框为抽象类 蓝色框为正常类,可创建对象 黄色箭头指向为父子类关系,箭头指向为父类 wapper介绍 : Wrapper : 条件构造抽象类&#xff0…

Portainer搭建使用

一、简介 Portainer是一个开源的容器管理平台,它为用户提供了一个直观且易于使用的图形用户界面(GUI),用于管理和监控容器化应用。以下是Portainer的一些主要功能: 容器管理:Portainer允许您轻松地创建、…

土木非科班转码测开,斩获10家大厂offer

大家好,我是洋子 24届秋招基本已经落下了帷幕,各大互联网大厂基本也开奖完毕,还没有拿到满意offer的同学也不要灰心,积极备战明年的春招。另外,25届想要找暑期实习的同学也可以开始准备起来了,基本大厂在春…

java基本类型等API 基本语法

目录 数组 字符 API java的逻辑表达是必须是布尔值,不能是整数 必须写上!0 java的两个对象判断时候回判断地址是否相等--例如两个字符串用equals 数组 字符串在编程中可以用来存储文本信息,而字符数组则只能用来存储字符 数组转为字符串Arrays.toString 字符…

Java绘图-第19章

Java绘图-第19章 1.Java绘图类 1.1Graphics类 Graphics类是用于绘制图形的抽象类,它是java.awt包中的一部分。Graphics类提供了各种方法,可以在图形上绘制各种形状、文本和图像。这些方法包括画线、画矩形、画椭圆、画弧、绘制图像等。 1.2Graphics2…

什么是3D建模中的“高模”和“低模”?

3D建模中什么是高多边形和低多边形? 高多边形建模和低多边形建模之间的主要区别正如其名称所暗示的那样:您是否在模型中使用大量多边形或少量多边形。 然而,在决定每个模型的细节和多边形级别时,还需要考虑其他事项。最值得注意的…

Python框架篇(1):FastApi-快速入门

1.介绍 前言: 不管学什么语言,都应该至少掌握一个框架,方面我们后续,进行服务部署、服务对外支持等; 1.1 官网介绍 下面是来自FastAPI官网的介绍: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架&#…

Java设计模式-结构型模式-适配器模式

适配器模式 适配器模式应用场景案例类适配器模式对象适配器模式接口适配器模式适配器模式在源码中的使用 适配器模式 如图:国外插座标准和国内不同,要使用国内的充电器,就需要转接插头,转接插头就是起到适配器的作用 适配器模式&…

浪潮信息KeyarchOS迁移体验

浪潮KOS迁移体验 文章目录 浪潮KOS迁移体验摘要CentOS 停更KOS简介 体验流程第一步,CentOS 体验第二部,迁移操作体验迁移评估迁移实施 第三步,软件功能验证操作系统验证终端登录 总结改进建议 关键字: 浪潮、 KOS、 X2Keyarch、…

第十五届全国大学生数学竞赛初赛试卷解析

参加了此次比赛,收获很多,两个半小时让我体会到了很多,所以想做个总结 第十五届全国大学生数学竞赛初赛试题 (非数学A类,2023年) 下面是答案解析,有兴趣的小伙伴可以做完对照一下。 直接使用洛必…

wireshark 抓包工俱使用一

一、场景一 查询某个Http请求的请求数据和响应数据 请求示例如下(请求机器IP 172.20.2.164,目标地址:10.30.2.171) 过滤条件分析,请求协议http,请求数据和响应数据(http通信中请求和响应实际是两…