c语言二维数组代码,C语言之二维数组(示例代码)

二维数组及其指针

1 ) 在了解二维数组之前,我们先来了解一维数组及其指针

我们知道,一维数组中:数组名代表-->数组首元素的首地址(千万不要认为是数组的首地址(&a),绝对不是)在内存中,该代码的表现形式如下图:

#include

{

int a[4];

int *p  = a;  //表明该指针指向了数组的首元素地址,当然也可以写为 int *p = &a[0];

return 0;

}

391ff7a2a695e2de62decbaf70369f08.png

-- 这时候,对指针取值(*p),就是对取出指向地址&a[0]中的值的就是a[0]的数据。

----------------------------------分割线------------------------------------

2 )下面我们进入二维数组的介绍,首先,请看一段代码:#include

intmain()

{

inta[2][4] = {1,2,3,4,

5,,4,5,6};

return0;

}该代码的表现形式如下图:

0748a1e81661bd9b5a113ef5826a10fe.png  右边的a[ 0 ] [ 0 ]  这些数据对应的是二维数组中(每个数组中的元素)。

了解了二维数组在内存中的表现形式:

--我们开始引入数组指针的概念:

2.1)  顾名思义:数组指针就是指向数组的指针,根据复杂类型的确认 ,数组指针形式为  int(*p)[ 3 ]; 表明该指针指向了(有三个int型数据)的数组 ,那么该数组名 a 就是数组a[ 0 ]的首地址,即(&a[ 0 ],也可写为a)

---(这点和一维数组的数组名相同----->都是数组首元素的首地址)

(***注意:该 图形两块不同的区域代表两个不同的数组----后面跟着的是每一个数组里面包含的元素)

2.2) a[ 0 ]这个数组名 代表了a[ 0 ]这个数组里面 a[ 0 ][ 0 ]的值的地址, 即----> a[ 0 ] == &a[ 0 ][ 0 ]   -

对于a[ 0 ]---- 这里可理解(不可画等号)为a[ 0 ] 是一个指针 ( 因为数组名是该首元素a[ 0 ][ 0 ]的地址嘛,既然是地址,就必须用指针来接收 )。

e3e3e1e5427442359243a11788099f88.png

2.3)p = a ;就是指向了a[ 0 ]这个数组的首地址。 也可写成&a[ 0 ];  名为二维数组的行指针

那么如果对 p 进行 p +1 操作,就表示地址移动到下一行(移动了sizeof(int)*4 = 16个字节),就是下一个数组的地址 -- 如上图所示

技巧 - -  / * 我们将二维数组依次看作一维数组逐步分析 * /

2.4)所以 p = a  + i ;   等价于   p = &a[ 0 ] + i

这是行指针的概念,如果对 p 取 * 运算符,表示取出 p 指向的内容,而 p 指向的的内容就是a[ 0 ],     行指针用来确定对哪一个数组的值进行操作,  直观的就是,这这个二维数组中, 选 a[ 0 ], a[ 1 ]这两个之中的其中一个进行操作),

2.5)*p  = *(&a[  0 ])=a[ 0 ],* (p + i) = a[ i ](c语言中,方括号[ ]运算符和*()运算符一致,可互换)

a[ 0 ]  + i   ==  &a[ 0 ][ 0 ] + i就是列指针的概念(对数组的每一个元素进行操作),对a[ 0 ]这个数组里面的元素地址 + i ,指到相应元素a[ 0 ][ i ]的地址  即&a[ 0 ][ i ]我们已经知道a[ 0 ]就是a[ 0 ][ 0 ]的值的地址,即&a[ 0 ][ 0 ]   所以如果对a[ 0 ]取 * 运算符,得到的就是a[ 0 ][ 0 ]的值。

即*( a[ 0 ]+ i)= a[ 0 ][ i ]

--------------------------------------看了这些不知道对各位朋友有无帮助。

下面我对二级指针做一个画图分析: 让我们更深一步的理解二维数组指针

205f2fa5fc33cfacb3745e288a9002b9.png

---------------------------------------------------------------------------------------------------

在文中有什么不对或者需要改进的地方,请各位朋友对我给出宝贵的意见和建议

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

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

相关文章

颜宁分享干货:给实验室博士的一些忠告

全世界只有3.14 % 的人关注了爆炸吧知识本文来源:颜宁微博nyouyou,作者:颜宁前几日,颜宁在微博上与大家分享自己做实验记录的心得。在此贴出,与大家分享~从我进Shi Lab的第一天,就被导师灌输:好…

研发考核难的本质是因为这三个特点

大家好,我是Z哥。我坦白,这篇是早就写好的库存文章,包括上周的那篇也是。原因是最近跳槽了,到新公司忙得飞起,都没时间写文章。还好我之前未雨绸缪准备了几篇提前写好的文章作为余量~我尽量能保持不断更&am…

剑指offer-面试题13.在O(1)时间删除链表节点

题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。 链表节点与函数的定义如下。 通常我们删除某个节点都是从头开始遍历到需要删除节点的前一个节点。 然后使得该节点的next指向删除节点的next即可,这样看来删除一个节点 的复杂度为O(n)…

为什么不能一次走遍哥尼斯堡的7座桥

全世界只有3.14 % 的人关注了爆炸吧知识数学的快乐到底有多简单今天,8岁表妹问了一个问题:看到这种类似11?的问题,超模君几乎不用思考就已经知道答案。但为了体现让表妹系统的理解知识,所以我决定......发生在哥尼斯堡…

官宣,11月8号,.NET6+64位VS璀璨面世!

12号,.NET6 RC2发布,13号,VS2022 RC版发布,11月8号,.NET6VS2022C#10 正式版将同时发布,.NET开发将步入全新篇章,各种新语法、新框架、新技术都如约而至,令人期待!然而&am…

Python-技巧

0.推荐的扩展 requests urilib的替代品 BeautifulSoup4 解析HTML代码 rq 任务队列 selenium 自动化测试工具,模拟浏览器 1.sys.modules, 根据已加载的模块创建对象, 其中 page 为类名 if hasattr(sys.modules[__name__], page):setattr(self, page, getattr(sys.mod…

暴击!被初中生碾压智商!这份被国家数学集训队采用的初中奥数资料究竟有多厉害?...

全世界只有3.14 % 的人关注了爆炸吧知识提高版,来了!这一份大部分人都没有见过的资料。它是我国出版的第一套数学竞赛的系列图书。前段时间,超模君给大家分享了这一系列的初中版奥数基础篇,得到了大家热烈的反响。于是&#xff0c…

COSCon21 开源文化 (GL) 论坛介绍

“ 点击蓝字 / 关注我们 ”| 作者、编辑:袁睿斌| 设计:朱亿钦、宋传琪第六届中国开源年会 (COSCon21) 将于 10月30-31日 由开源社举办。本次年会重新回归线下,让小伙伴们的面基成为了可能。届时,北京、上海、深圳、成都、珠海、大…

android wifi

<!-- 以下是使用wifi访问网络所需要的权限 --> <uses-permission android:name"android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name"android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:n…

1.5.2 在IIS上配置ASP.NET(转)

1.5.2 在IIS上配置ASP.NET 在服务器上部署ASP.NET网站时&#xff0c;需要.NET的运行环境.NET Framework。.NET Framework类似于Java的JDK&#xff0c;包含有.NET程序运行环境和命令行编译工具。如果服务器上没有安装.NET Framework&#xff0c;这就需要从微软网站下载&#xf…

51单片机外部地址c语言,cx51与c语言对单片机内部和外部资源变量和地址的定义是否兼容?为什么...

span namewhlm idwhlm原因:classpath没有设置好系统变量->新建->变量名&#xff1a;CLASSPATH 变量值&#xff1a;.;%JAVA_HOME%\lib(CLASSPATH中有一英文句号“.”后跟一个分号&#xff0c;表示当前路径的意思)在Classpath里面你可以直接指定一个包名&#xff0c;比如你…

你和女朋友的婚后老年生活!

1 厉害了&#xff0c;连扇子都是爱你的形状~2 一个漂亮的后空翻3 长得大了不起啊&#xff01;4 哈哈哈哈哈哈哈是这样5 哈哈哈哈哈防不胜防&#xff01;6 教科书般的标准答案你点的每个赞&#xff0c;我都认真当成了喜欢

实现一个基于 IConfiguration 的低配版 FeatureFlag

实现一个基于 IConfiguration 的低配版 FeatureFlagIntro在我们的应用中&#xff0c;可能有一些配置开关的需求&#xff0c;某些功能是否启用使用一个配置开关&#xff0c;用的时候就打开&#xff0c;不用的时候就关掉&#xff0c;于是基于 .NET Core 的里配置体系写了一个简单…

slider节点透明背景_【Cocos Creator 实战教程(1)】——人机对战五子棋(节点事件相关)...

一、涉及知识点场景切换按钮事件监听节点事件监听节点数组循环中闭包的应用动态更换sprite图片定时器预制资源二、步骤2.1 准备工作首先&#xff0c;我们要新建一个空白工程&#xff0c;并在资源管理器中新建几个文件夹​在这些文件夹中&#xff0c;我们用来存放不同的资源&…

《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术

2011年8月 ISATAP隧道 ISATAP &#xff08; Intra-Site Automatic Tunnel Addressing Protocol&#xff0c;站间自动隧道寻址协议&#xff09;是一种地址分配和主机到主机、主机到路由器和路由器到主机的自动隧道技术.它为IPv6主机之间提供了跨越IPv4内部网络的单播IPv6连通性。…

霍金竟然亲口承认自己是个赌徒!明明失败了不止一次,“菜鸡”却成了神话!...

全世界只有3.14 % 的人关注了爆炸吧知识科学“赌徒”在线发牌 一直以来他像一个深渊的幽灵&#xff0c;似乎无处不在他影响了无数的天体&#xff0c;却又无影无踪他永远只停留在人们的推断真实的图像&#xff0c;交错的数据他究竟是神仙的化身&#xff0c;还是地狱的使者没人…

小波变换原理_小波变换的知识,转载的

一、绘制原理&#xff1a;需要用到的小波工具箱中的三个函数cwt()&#xff0c;centfrq()&#xff0c;scal2frq()。具体参数及用途介绍如下&#xff1a;&#xff08;1&#xff09;COEFS cwt(S,SCALES,wname)该函数实现连续小波变换&#xff0c;其中S为输入信号&#xff0c;SCAL…

不让伤害再次发生

不让伤害再次发生我是英特尔成都工厂的第二批员工,在上海工厂学习培训之后,于2005 年加入到成都封装测试工厂的启动和生产工作中,到2010 年,我已经在成都工厂工作了五年半。在这五年半时间里,我始终在封装工程部任工程师,负责站点的设备、工艺和质量,确保站点按照相关计划和流程…

撩妹学会这一招,就没有人能拒绝你!

1 为了恋爱学会了 PS&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 二十不惑&#xff0c;手很迷惑▼3 怀疑家里的猫是「人变的」&#xff08;via.七七和铲屎官&#xff09;▼4 云南人有多喜欢吃菌子&#xff08;via.车夫&#xff09;&#xff08;请勿模仿&…

Javascript:阻止浏览器默认右键事件,并显示定制内容

在逛一些知名图片社区的时候&#xff0c;遇到自己心怡的图片&#xff0c;想要右键另存的时候&#xff0c;默认的浏览器菜单不见了&#xff0c;却出现了如&#xff1a;[©kevin版权所有]之类的信息&#xff1b; 今天在看Javascript事件默认行为相关的知识&#xff0c;所以&a…