C语言中二维数组在内存中的存放顺序是什么

二维数组内存中的存放顺序是按行存放,即放完一行之后再放入第二行;也就是先存放“a[0]”行,再存放“a[1]”行,接着存放“a[2]”行,以此类推直到元素放完;每行中元素也是依次存放。

C语言中二维数组在内存中的存放顺序是什么

本教程操作环境:windows7系统、c99版本、Dell G3电脑。

二维数组定义的一般形式是:

dataType arrayName[length1][length2];

登录后复制

其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。

我们可以将二维数组看做一个 Excel 表格,有行有列,length1 表示行数,length2 表示列数,要在二维数组中定位某个元素,必须同时指明行和列。例如:

立即学习“C语言免费学习笔记(深入)”;

int a[3][4];

登录后复制

定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:

a[0][0], a[0][1], a[0][2], a[0][3]a[1][0], a[1][1], a[1][2], a[1][3]a[2][0], a[2][1], a[2][2], a[2][3]

登录后复制

如果想表示第 2 行第 1 列的元素,应该写作 a[2][1]。

也可以将二维数组看成一个坐标系,有 x 轴和 y 轴,要想在一个平面中确定一个点,必须同时知道 x 轴和 y 轴。

二维数组在概念上是二维的,但在内存中是连续存放的;换句话说,二维数组的各个元素是相互挨着的,彼此之间没有缝隙。那么,如何在线性内存中存放二维数组呢?有两种方式:

一种是按行排列, 即放完一行之后再放入第二行;

另一种是按列排列, 即放完一列之后再放入第二列。

在C语言中,二维数组是按行排列的。也就是先存放 a[0] 行,再存放 a[1] 行,最后存放 a[2] 行;每行中的 4 个元素也是依次存放。数组 a 为 int 类型,每个元素占用 4 个字节,整个数组共占用 4×(3×4)=48 个字节。

你可以这样认为,二维数组是由多个长度相同的一维数组构成的。

例如:

一个学习小组有 5 个人,每个人有 3 门课程的考试成绩,求该小组各科的平均分和总平均分。

–MathCEnglish张涛807592王正华616571李丽丽596370赵圈圈858790周梦真767785

对于该题目,可以定义一个二维数组 a[5][3] 存放 5 个人 3 门课的成绩,定义一个一维数组 v[3] 存放各科平均分,再定义一个变量 average 存放总平均分。最终编程如下:

#include int main(){    int i, j;  //二维数组下标    int sum = 0;  //当前科目的总成绩    int average;  //总平均分    int v[3];  //各科平均分    int a[5][3];  //用来保存每个同学各科成绩的二维数组    printf("Input score:");    for(i=0; i

运行结果:

Input score:80 61 59 85 76 75 65 63 87 77 92 71 70 90 85↙Math: 72C Languag: 73English: 81Total: 75

登录后复制

程序使用了一个嵌套循环来读取所有学生所有科目的成绩。在内层循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内层循环(进入外层循环)后再把该累加成绩除以 5 送入 v[i] 中,这就是该门课程的平均分。外层循环共循环三次,分别求出三门课各自的平均成绩并存放在数组 v 中。所有循环结束后,把 v[0]、v[1]、v[2] 相加除以 3 就可以得到总平均分。

相关推荐:《C语言视频教程》

以上就是C语言中二维数组在内存中的存放顺序是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2431995.html

(0)
上一篇 2025年3月3日 08:52:59
下一篇 2025年2月24日 02:31:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 数组指针和指针数组的区别是什么

    区别:指针数组本身是一个数组,数组的元素都是指针,即数组存储的是指针,数组占多少个字节由数组本身决定;而数组指针本身是一个指针,它指向一个数组,即它是指向数组的指针,在32位系统下永远占4字节。 本教程操作环境:windows7系统、c99…

    2025年3月3日
    200
  • c语言数组怎么初始化

    方法:1、定义数组时给所有元素赋初值,例“int a[5]={1,2,3,4,5}”;2、给一部分元素赋值,例“int a[5]={1,2}”;3、定义时不指定数组长度,直接给所有元素赋初值,例“int a[]={1,2,3,4,5}”。 …

    2025年3月3日
    200
  • 汇编语言和c语言的区别有哪些

    区别:1、汇编语言效率高,C语言效率比较低;2、汇编语言对硬件的可操控性强,C语言硬件可操控性比较差;3、汇编语言目标代码体积小,C语言目标代码体积大;4、汇编语言不易维护,C语言容易维护;5、汇编语言可移植性很差,C语言可移植性很好等。 …

    2025年3月3日
    200
  • 七彩虹战斧・赤焰 DDR5 6600 24GBx2 内存发布,799 元

    本站 2 月 1 日消息,七彩虹发布了战斧・赤焰 ddr5 内存的 6600mhz 频率新版本,24gb 双条定价 799 元。 新款战斧优化了外观,红白配色,号称搭载海力士原厂颗粒,采用 10 层 PCB 设计,支持英特尔 XMP 3.0…

    2025年3月3日
    200
  • c程序是由什么构成

    c程序是由函数构成,是由一个main函数和若干个其他函数构成的。函数是C程序的基本单位,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己定义的函数。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 C源程…

    2025年3月3日
    200
  • c语言中形参的缺省存储类别是什么

    c语言中形参的缺省存储类别是auto;形式参数用关键字auto作存储类别的声明时,关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,它属于动态存储方式。 本文操作环境:Windows7系统、C11、Dell G3电脑。 …

    2025年3月3日
    200
  • c语言中node是什么意思

    在C语言中,node是用于定义链表结点的名称,通常在数据结构中用作结点的类型名,语法为“struct Node{…};”;结构和类在定义出名称以后,直接用该名称就可以定义对象,C语言中还存在“Node * a”和“Node* &…

    2025年3月3日
    200
  • 聊聊如何利用纯C语言对EXCEL进行读写操作

    如何利用纯c语言对excel进行读写操作?下面本篇文章给大家介绍一下通过纯c语言进行excel读写操作的方法,希望对大家有所帮助! 在之前需要使用C语言读取Excel文件内容的功能,查阅了很多资料,大部分是通过ODBC或者过OLE/COM对…

    2025年3月3日 编程技术
    200
  • C语言入门之聊聊基础知识(数据类型、变量、函数、数组等)

    本篇文章带大家学习一下c语言,聊聊c语言的基础知识(数据类型、变量、函数、数组等),希望对大家有所帮助! 什么是C语言 简单来说 C语言就是一门计算机语言,广泛应用与底层开发,使用语言写代码程序,解决问题所以说对于计算机这一专业来说C语言和…

    2025年3月3日 编程技术
    200
  • c语言中关键字有多少个

    C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。数据类型关键字有12个,包括char、double、float、int等;控制语句关键字有12个,包括for、break、i…

    2025年3月3日
    200

发表回复

登录后才能评论