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…

点击User Profile Service Application 报错

给客户部署的MOSS2010 SP1版本,部署完毕后,发现点击User Profile Service Application服务进行配置的时候,总是报错,上网查了一下,发现原来是微软的一个补丁包没有安装,于是下载了这个几乎1G的补丁包&#…

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

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

c语言程序stm8s,stm8s的c语言编程例程

stm8s的c语言编程例程实例一:控制灯的亮灭(或者蜂鸣器响,只要连接相应端口就可以了):#i nclude "stm8s.h"〃头文件#defi ne ulong un sig ned long///void delay( ulong i){ulo ng j;for(j0;j{;}} 延时函数void mai n( …

python画图比赛_Python选修课第二届Turtle绘图大赛

20181101173,荀梓恒20181101197,叶普旭代码如下:import turtle as tt.setup(width0.5, height0.75, startxNone, startyNone)t.hideturtle()t.speed(10)t.pensize(2)t.penup()t.goto(100,200)t.pendown()t.setheading(90)t.begin_fill()t.colormode(255)t.fillcolor…

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

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

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

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

IUnknown接口QueryInterface函数介绍

一、COM组件的目标: COM组件的一个主要优势是:便于升级。 要实现这个优势需要满足一下两个条件: 1、运行时从客户程序动态加载和卸载,采用DLL技术可以实现。 2、为了更好的突出DLL的优势,还需要信息隐藏,即…

stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

STC单片机C语言指针主讲:何宾Email :hebinmail.buct.edu.cn2016.03C51编译器中指针的分类Cx51编译器支持使用字符“*”声明变量指针。C51编译器可以执行在标准C中所提供的所有操作。但是,由于8051独一无二的结构以及特点,C51编译器…

小猿学python_小猿圈python入门之转行零基础该如何学Python?

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家解决一下疑惑。学习Python难吗&am…

dojo Quick Start/dojo入门手册--json

那要是我想更换获取到的数据类型,比如json?xml?修改handleAs即可,如: handleAs: "json" dojo.xhrGet({ url: "http://localhost/hello/sayHello.jsp", handleAs: "json", load…

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日 由开源社举办。本次年会重新回归线下,让小伙伴们的面基成为了可能。届时,北京、上海、深圳、成都、珠海、大…

pythonopencv显示图像_OpenCV-Python 读取显示图像 | 五

目标在这里,你将学习如何读取图像,如何显示图像以及如何将其保存回去你将学习以下功能:cv.imread(),cv.imshow(),cv.imwrite()(可选)你将学习如何使用Matplotlib显示图像使用OpenCV读取图像使用cv.imread()函数读取图像…

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;比如你…

Resin的安全性ip限制

转载自resin的log、安全性ip限制、内存jvm、keepalive、代码的更新检测等在webapp标签下&#xff0c;可以有很多种安全性配置&#xff0c;下面介绍ip限制、用户米密码限制两种。ip限制在正常访问的web-app标签下&#xff0c;增加一个security-constrain标签即可&#xff0c;如下…