C语言3×3二维数组_什么是二维数组

C语言3×3二维数组_什么是二维数组C语言目录C/C++学习资源(百度云盘链接)计算机二级资料(过级专用)C语言学习路线(从入门到实战)编写C语言程序的7个步骤和编程机制C语言基础-第一个C程序C语言基础-简单程序分析VS2019编写简单的C程序示例简单示例,VS2019调试C语言程序C语言基础-基本算法C语言基础-数据类型C语言中的输入输出函数C语言流程控制语句C语言数组——一维数组二维数组前面介绍了…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

C语言目录

C/C++学习资源(百度云盘链接)
计算机二级资料(过级专用)
C语言学习路线(从入门到实战)
编写C语言程序的7个步骤和编程机制
C语言基础-第一个C程序
C语言基础-简单程序分析
VS2019编写简单的C程序示例
简单示例,VS2019调试C语言程序
C语言基础-基本算法
C语言基础-数据类型
C语言中的输入输出函数
C语言流程控制语句
C语言数组——一维数组

二维数组

前面介绍了一维数组,接下来介绍如何定义和使用二维数组。

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

类型说明符 数组名[常量表达式1][常量表达式2]

与一维数组的定义唯一的不同是多了一个常量表达式2,其中,常量表达式1为第一维的长度,常量表达式2为第二维的长度。通常在处理二维数组的时候,为了便于理解,都将数组视为一个矩阵,常量表达式1表示矩阵的行数,而常量表达式2表示矩阵的列数。与一维数组一样,在定义二维数组时,常量表达式同样不能为变量。下面先通过一段代码来看二维数组的定义。

#include<stdio.h>

#define M 4
#define N 3


int main() { 
   
  int arr[M][N];
  for (int i = 0; i < M; i++)
  { 
   
    for (int j = 0; j < N; j++)
    { 
   
      printf("&arr[%d][%d]=%d\t", i, j, &arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}

运行结果:
在这里插入图片描述
将二维数组arr视为一个矩阵,下图显示了数组中每个元素在矩阵中的存放位置。
image.png
数组中各个元素在矩阵中对应的位置由二维数组的两个下标决定。我们可以将定义的二维数组int arr[4][3]视为由arr[4]和int [3] 两部分构成,将arr[4]视为一个整型一维数组,其中含有4个元素arr[0]、arr[1]、arr[2]、arr[3],每个元素都是int[3]类型的,也就是说,每个元素又是一个一维数组,每个一维数组含有3个元素,如arr[0]含有arr[0][1]、arr[0][1]、arr[0][2]三个元素。

知道了二维数组的这种特殊结构之后,接下来通过下图来了解二维数组在内存中的存储结构。
image.png
通过上述二维数组在内存中的存储结构图可以发现,二维数组中的所有元素都存储在一片连续的内存单元中,所占用的内存大小为元素类型所占用的内存大小乘以第一维及第二维的长度。如果以矩阵的方式来分析二维数组的存储方式,那么先从矩阵第一行从左往右依次存储完所有元素,然后按照同样的方法存储第二行的所有元素,直到存储完所有数组元素为止。

接下来再看一个二维数组的示例:

任意输入一个3行3列的二维数组,求对角元素之和

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() { 
   
  int arr[3][3];
  int i, j, sum = 0;
  printf("please input:\n");
  for (i = 0; i < 3; i++)
  { 
   
    for (j = 0; j < 3; j++)
    { 
   
      scanf("%d", &arr[i][j]);
    }
  }
  for (i = 0; i < 3; i++)
  { 
   
    for ( j = 0; j < 3; j++)
    { 
   
      if (i==j)
      { 
   
        sum += arr[i][j];
      }
    }
  }
  printf("the result is: %d\n", sum);
  return 0;
}

运行结果如下:
在这里插入图片描述
关于以为数组就介绍到这,后面继续更新。。。

如果您觉得本篇文章对您有帮助,请转发给更多的人
C语言中文社区】是一个C语言视频教程、学习笔记、电子书、计算机二级资料等专注于C语言编程学习者的干货知识分享平台,精选深度文章,分享优秀干货类、技能类的学习资源,帮助学习中的你。
在这里插入图片描述

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157410.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数组转为list java_思考与实践并行的俗语

    数组转为list java_思考与实践并行的俗语不曾想到,“Java数组转List”竟然有这么多的学问,震撼之余夹带些许不堪。

    2022年8月23日
    4
  • 大数据开发面试知识点总结[通俗易懂]

    大数据开发面试知识点总结[通俗易懂]​本文详细介绍大数据hadoop生态圈各部分知识,包括不限于hdfs、yarn、mapreduce、hive、sqoop、kafka、flume、spark、flink等技术,总结内容适合大数据开发者学习,希望能够和大家多多交流。

    2022年6月4日
    27
  • 英雄联盟 源代码_c语言游戏源码

    英雄联盟 源代码_c语言游戏源码【C语言】英雄联盟英雄查询系统模拟模拟~~~程序介绍:【C语言】英雄联盟英雄查询系统/*———————————-project:英雄联盟英雄查询系统author:LLZtoolman:xyfinish:2019/12/26———————————-*//*—————————–⊙注意事项!!!!为了用C语言实现文件的读写程序读取数据

    2022年9月19日
    0
  • java snmp协议_snmp属于哪一层协议

    java snmp协议_snmp属于哪一层协议背景控制华为交换机的poe供电与断电来重启PADsnmp协议使用importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.util.Vector;importlombok.extern.slf4j.Slf4j;importorg.snmp4j.CommunityTarget;importorg.snmp4j.PDU;importorg.snmp4j.Snmp;

    2022年10月16日
    0
  • gtest和gmock的关系_gtest教程

    gtest和gmock的关系_gtest教程对于c++来说写单元测试和mock框架不是一件容易的事情。还好,Google为我们搭建了一个出色的单元测试和mock框架。网上的例子很多都过多强调概念,本文用一个简单的例子让大家对于什么是gtest和gmock让大家有一个直观的了解,让大家很快上手,就像写helloword一样容易。gtest&gmock的1.6版本的使用make编译,新版的已经已经迁移

    2022年9月28日
    1
  • 1000个微信小程序源码分享[通俗易懂]

    1000个微信小程序源码分享[通俗易懂]文章目录微信小程序源代码获取开发账号注册小程序部分源码展示程序展示微信小程序现在的微信小程序非常火爆,网上也有很多学习资源,但是源码资源还是很少的。其实在学习开发微信小程序的时候如果有源码可以供我们借鉴,学习效率也会成倍的增加。无论是前端开发,还是后端开发,时间长了,你总会能总结出它的一些规律的,对于前端开发主要就两条,页面展现,逻辑处理。如果是全流程开发的话,那就是,如何创建项目,页面如何实现,数据获取和逻辑处理如何实现,如何打包上线。移动端或者前端,基本开发流程就这个四个步骤。所以在在前端方面去学

    2022年9月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号