一维数组和二维数组的区别_数组指针和指针数组的区别

7e2f68ce1b5c9781ff8002585eb406a5.png
数组指针和指针数组的区别 - hongcha_717 - 博客园​www.cnblogs.com

数组指针(也称行指针)
定义 int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。

如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

所以数组指针也称指向一维数组的指针,亦称行指针。

指针数组
定义 int *p[n];
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。

这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
还需要说明的一点就是,同时用来指向二维数组时,其引用和用数组名引用都是一样的。
比如要表示数组中i行j列一个元素:
*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]

优先级:()>[]>*

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

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

相关文章

mysql 配置多个数据库连接_总结MySQL修改最大连接数的两个方式

问题在使用MySQL数据库的时候&#xff0c;经常会遇到这么一个问题&#xff0c;就是“Can not connect to MySQL server. Too many connections”-mysql 1040错误&#xff0c;这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常&#xff0c;mysql的最大连接数默认…

饿了么超级会员,年卡低至108元!饿了么会员,点外卖超省钱!

饿了么是大家常用的外卖平台&#xff0c;经常点外卖的朋友&#xff0c;充个饿了么超级吃货卡&#xff0c;还是能省不少钱的&#xff0c;今天给大家带来饿了么会员特价充值&#xff0c;会员秒到&#xff01;饿了么超级会员特价充值月卡&#xff1a;原价15元&#xff0c;特价仅需…

React Native之内部方法常用几种写法和调用规则

1 简单部分代码 export default class App extends Component<Props> {render() {return (<View style{styles.container}><View style{styles.welcome}><Button onPress{this.showMsg}titleprees me showMsg/> <Button onPress{() > {this.sho…

介绍一款受欢迎的.NET 开源UI库

概述今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包&#xff0c;它许多开箱即用的好东西。目前支持的NET Framework 4.6.2及更高版本、.NET Core 3.1, .NET 5 and .NET 6 (on Windows)。官网学习文档地址&#xff1a;…

图像分类中混淆矩阵精度验证法中的几个指标说明

ToolBox->Classification->PostClassification->Confusion Matrix->Using Ground Truth ROIs,可以得到如下的分类精度验证的混淆矩阵。 要看懂这个精度验证结果,需要了解几个混淆矩阵中的几项评价指标:

React Native之触摸事件(Touchable系列和onLongPress)

1 触摸事件 普通点击我们可以使用onPress方法,我们可以使用Touchable 系列控件设计我们的按钮 TouchableHighlight 背景会在用户手指按下时变暗 TouchableNativeFeedback用户手指按下时形成类似墨水涟漪的视觉效果 TouchableOpacity指按下时降低按钮的透明度&#xff0c;而…

社交背水一战?校园日记背后,支付宝野心你真能懂?

“校园日记”昨天火了一天&#xff0c;我们也是时候来聊聊支付宝背后的具体战略和意图了。今天早上看到虎嗅的头条《支付宝的“圈子”&#xff0c;阿里做社交的背水一战》&#xff0c;文章观点主要分析了支付宝做社交的必要性&#xff0c;以及这次切入社交领域的巧妙性。 这篇文…

北大青鸟s2结业考试机试_重庆北大青鸟「学员心声」任何一次的考试,都是一次珍贵的蜕变...

相信不少同学&#xff0c;在每次考完试后都会有一段 “舒适期‘’。虽然这时候有讲评、有成绩、有排名&#xff0c;但就是感觉学习压力少了许多。然而重庆北大青鸟校区鼓励学员考完要分析、总结考试结果&#xff0c;这样才能更好的找出在学习中遇到的问题并加以解决。以下分享的…

React Native之(var和let区别 )(简单解构)(map对象遍历)(可变顺序参数和不可以变顺序参数函数)

1 var和let区别 let左右范围在块里面,var定义的变量可提升,用let声明的变量不可以声明2次 2 简单解构 let [a, b, c] [1, 2, 3];3 map对象遍历 const map new Map();map.set(first, hello);map.set(second, world);for (let [key, value] of map) {console.log(key "…

【鉴权/授权】一步一步实现一个简易JWT鉴权

微信公众号&#xff1a;趣编程ACE关注可了解.NET日常开发技巧。如需源码&#xff0c;请公众号留言 源码;**[如果您觉得本公众号对您有帮助&#xff0c;欢迎下方扫码加入群聊]鉴权、授权专题之简易鉴权我记得作为实习生去公司上班的时候&#xff0c;领导就直接让我熟悉注册、登录…

17、字符设备控制技术

字符设备控制技术 前面的学习&#xff0c;我们学习了驱动程序&#xff0c;实现程序的读写功能。现在设备还有一项更重要的功能--控制。 控制设备的函数&#xff1a;ioctl。 Cmd&#xff1a;参数是我们发送的命令&#xff0c;例如重启。 第三个参数&#xff1a;是依赖第二个…

如何在Lua与C/C++之间实现table数据的交换

为什么80%的码农都做不了架构师&#xff1f;>>> 之前在《C/C和Lua是如何进行通信的&#xff1f;》一文中简单的介绍了lua与宿主之间的通信。简单的说两种不同的语言之间数据类型不一样又如何进行数据交换呢&#xff1f;那就是lua_State虚拟栈&#xff0c;通过栈操作…

华为ar2200路由器 策略路由_路由交换篇 06 华为路由器RIP协议的配置

任务2 RIP路由协议的配置■ 任务背景某大型企业已有12台路由器&#xff0c;需要组建内部网络实现资源共享&#xff0c;考虑公司规模较大不适合采用静态路由组网&#xff0c;工程师对公司的实际情况进行了分析&#xff1a;1、路由跳数较多&#xff0c;不适合使用静态路由组网&am…

c均值算法的设计与实现_如何使用C链表实现 LRU 算法

什么是 LRU 算法LRU 是一种缓存淘汰策略。计算机的缓存容量有限&#xff0c;如果缓存满了就要删除一些内容&#xff0c;给新的内容腾位置。但是要删除哪些内容呢&#xff1f;我们肯定希望删掉那些没有用的缓存&#xff0c;而把有用的数据继续留在缓存中&#xff0c;方便之后继续…

VS Code部署Teams webhook到Azure Functions

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;6分钟&#xff09;Microsoft Teams这款产品对于我们来说已经很熟悉了&#xff0c;作为开发者&#xff0c;我们也可以通过官方的一些开发模式来build我们自己的Teams应用。今天快速跟大家分享一下&#xff0c;如何在VS…

记一次TCP连接异常故障解决

为什么80%的码农都做不了架构师&#xff1f;>>> 一.情况表现为 1.在公司内网对站点的http访问&#xff1a; linux主机出现故障&#xff1a;curl以及抓包分析&#xff0c;发现服务端不响应linux客户端的请求&#xff0c;无法建立TCP连接&#xff0c;浏览器返回“无法…

微软官方pe工具_微软官方下载工具

二、进入官网下载百度搜索“win10下载”进入微软官网win10下载地址&#xff0c;点击“立即下载工具”开始下载&#xff1b;三、运行软件下载完成后&#xff0c;右键以“管理员身份”打开&#xff0c;点击“接受”。四、选择用途选择第一个升级自己的电脑&#xff1b;选择第二个…

Task.Factory.StartNewTResult 和 Task.RunTResult 到底有什么区别?

前言这不是和《Task.Factory.StartNew 和 Task.Run 到底有什么区别&#xff1f;》一样吗&#xff0c;怎么又写一篇&#xff1f;起先我也是这么觉得的&#xff0c;但实际发现并非如此。实现代码查看这 2 个方法的内部实现&#xff0c;其内部实现逻辑其实是一样的&#xff0c;只是…

【遥感物候】C#遥感数据GIMMS 3G NDVI头文件批量生成器(几何校正)

长时间序列全球NDVI数据GIMMS 3g(点击下载),原数据无投影,格式为VI3g,IE浏览器下载的为.txt格式。GIS软件无法直接打开,Envi 5可以打开。 ENVI中点击File->Open File as->Binary会弹出填写元数据的窗口,填写基本信息: Envi5.1中打开二进制(Binary)数据是,需要…

分享一个基于.NET6包含DDD,ES,CQRS等概念的开源项目

当你在学习DDD、CQRS或时间溯源时&#xff0c;除了大量的学习资源&#xff08;比如书籍和文章&#xff09;之外&#xff0c;你还接触到了许多概念&#xff0c;这些资源只是在讨论理论问题。这很好&#xff0c;我们知道他们在说什么&#xff0c;但我们如何在一个真正的项目中使用…