指针传2

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

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

 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.rhkb.cn/news/193108.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 HarmonyOS 上实现 ArkTS 与 H5 的交互

介绍 本篇 Codelab 主要介绍 H5 如何调用原生侧相关功能,并在回调中获取执行结果。以“获取通讯录”为示例分步讲解 JSBridge 桥接的实现。 相关概念 Web组件:提供具有网页显示能力的 Web 组件。 ohos.web.webview:提供 web 控制能力。 …

<C++> 优先级队列

目录 前言 一、priority_queue的使用 1. 成员函数 2. 例题 二、仿函数 三、模拟实现 1. 迭代器区间构造函数 && AdjustDown 2. pop 3. push && AdjustUp 4. top 5. size 6. empty 四、完整实现 总结 前言 优先级队列以及前面的双端队列基本上已经脱离了队列定…

Ansible 企业实战详解

一、ansible简介1. ansible是什么2.ansible的特点ansible的架构图 二、ansible 任务执行1、ansible 任务执行模式2、ansible 执行流程3、ansible 命令执行过程 二 .Ansible安装部署1.yum安装2.ansible 程序结构3、ansible配置文件查找顺序4、ansible配置文件5.ansible自动化配置…

electronjs入门-编辑器应用程序

我们将在Electron中创建一个新项目,如我们在第1章中所示,名为“编辑器”,我们将在下一章中使用它来创建编辑器;在index.js中,这是我们的主要过程;请记住为Electron软件包放置必要的依赖项: npm…

uniapp基础学习笔记01

文章目录 本博客根据黑马教程学习uniapp一、技术架构二、创建项目2.1 Hbuilder创建2.2 插件安装2.3 微信开发者工具配置与运行2.3.1 简单修改基础页面 2.4 pages.json和tabBar2.4.1 pages.json与tabBar配置2.4.2 案例 三、uniapp与原生开发的区别 本博客根据黑马教程学习uniapp…

安装node.js指定任意版本详解

Node.js是一种基于Chrome V8引擎的JavaScript运行时环境。它允许开发人员使用JavaScript编写服务器端和网络应用程序。与传统的JavaScript在浏览器中执行不同,Node.js使得JavaScript可以在服务器端运行。 Node.js具有以下特点: 1. 非阻塞式I/O&#xf…

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

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

springboot国际化

1.环境配置 这里插入图片描述](https://img-blog.csdnimg.cn/024d6bc95623485eb6da4d998a892458.png) 2.文件配置 第一个默认环境 第二个英文环境 第三个中文环境 3.变量配置 调整语言 原理: 找到MessageSourceAutoConfiguration 中的 利用代碼的方式獲取国…

图论11-欧拉回路与欧拉路径+Hierholzer算法实现

文章目录 1 欧拉回路的概念2 欧拉回路的算法实现3 Hierholzer算法详解4 Hierholzer算法实现4.1 修改Graph,增加API4.2 Graph.java4.3 联通分量类4.4 欧拉回路类 1 欧拉回路的概念 2 欧拉回路的算法实现 private boolean hasEulerLoop(){CC cc new CC(G);if(cc.cou…

数字化转型时代,商业智能BI到底是什么?

据国际数据公司(IDC)预测,2025年时中国产生的数据量预计将达48.6ZB,在全球中的比例为27.8%。商业智能BI这一专为企业提供服务的数据类解决方案,仅2021年上半年在中国商业智能BI市场规模就达到了3.2亿美元,商…

java入门,从CK导一部分数据到mysql

一、需求 需要从生产环境ck数据库导数据到mysql,数据量大约100w条记录。 二、处理步骤 1、这里的关键词是生产库,第二就是100w条记录。所以处理数据的时候就要遵守一定的规范。首先将原数据库表进行备份,或者将需要导出的数据建一张新的表了…

Java绘图-第19章

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

Android修行手册 - 阴影效果的几种实现以及一些特别注意点

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC 👉关于作者 专…

3D造型渲染软件DAZ Studio mac中文版介绍

DAZ Studio mac是一款3D造型和渲染软件,由 Daz 3D 公司开发。它允许用户创建、编辑、动画化并渲染精美的数字图像与动画。DAZ Studio 还提供了一个虚拟的3D艺术家工作室环境,让用户可以轻松地设置场景、布置角色和应用材质。 用户可以通过 DAZ Studio 中…

8.查询数据

一、单表查询 MySQL从数据表中查询数据的基本语为SELECT语。SELECT语的基本格式是: SELECT {* | <字段列名>} [ FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator>…

032-从零搭建微服务-定时服务(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

C语言不可不敲系列:跳水比赛排名问题

目录 1题干&#xff1a; 2解题思路&#xff1a; 3代码: 4运行结果: 5总结: 1题干&#xff1a; 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果 A选手说&#xff1a;B第二&#xff0c;我第三&#xff1b; B选手说&#xff1a;我第二&#xff0c;E第四&am…

十九章总结

Graphics类 Graphics类是所有图形上下文的抽象基类&#xff0c;封装了Java支持的基本绘图操作所需的状态信息&#xff0c;主要包括颜色、字体、画笔 Graphics2D类 Graphics2D类继承Graphics类实现功能更加强大的绘图操作集合 绘制图形 在项目中创建一个类&#xff0c;是该…

nginx安装搭建

下载 免费开源版的官方网站&#xff1a;nginx news Nginx 有 Windows 版本和 Linux 版本&#xff0c;但更推荐在 Linux 下使用 Nginx&#xff1b; 下载nginx-1.14.2.tar.gz的源代码文件&#xff1a;wget http://nginx.org/download/nginx-1.14.2.tar.gz 我的习惯&#xff0…

【Linux进阶之路】一文吃透文件

前言 先来谈一下文件的共识 文件 内容 属性。 解释&#xff1a;文件在创建时就有基本属性&#xff0c;比如权限&#xff0c;文件名&#xff0c;文件的创建时间等基本信息。文件分为打开的文件与未被打开的文件。 解释&#xff1a;打开的文件由操作系统进行管理。未打开的文件…