【C语言】数组(下)

news2024/11/24 22:44:35

6、二维数组的创建

6.1二维数组的概念

通过数组(上)介绍,我们学习了一维数组,数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时就是二维数组,以此类推,如果把二维数组作为数组的元素,那么被称为三维数组。二维数组以上的我们称为多维数组

以下为图例:
在这里插入图片描述

6.2二维数组的创建

二维数组的语法如下:

type arr_name[常量值1][常量值2];
eg:
int arr[5][3];
double score[5][10];

解释:

  • int类型数组中5代表有5行;
  • int类型数组中3代表有3列;
  • int表示二维数组中每个元素的类型都是整型类型。
  • arr 是数组名称,可以根据自己的需要来创建。

7、二维数组的初始化

在前面创建变量的时候我们往往需要进行初始化,这是学习编程的一个好的习惯。那么在二维数组中我们也可以给定一些初始值,这样被称为二维数组的初始化

二维数组的初始化也和一维数组初始化的方法一致,都是在大括号里面给定一些初始值进行初始化的。

7.1不完全初始化

int arr1[4][6]={5,6};
int arr2[3][2]={0};

不完全初始化初始值存放如下图所示:
在这里插入图片描述

7.2完全初始化

int arr3[5][5]={1,2,3,4,5,2,3,4,5,6,3,4,5,6,7,4,5,6,7,8,5,6,7,8,9};

在这里插入图片描述

7.3按照行初始化

int arr4[4][3]={{1,2},{2,3},{3,4},{4,5}};

在这里插入图片描述

7.4初始化时可以省略行,但是不能省略列

int arr5[][8]={1,2,3,4,5};
int arr6[][6]={1,2,3,4,5,6,7,8,9};
int arr7[][5]={{1,2},{2,3},{3,4},{4,5}};

在这里插入图片描述

8、二维数组的使用

8.1 二维数组的下标

二维数组的访问跟一维数组一样也是使用下标的形式,二维数组是有行和列的,确定了数组中某个元素的行和列后就能锁定数组中的某个元素。

int arr[3][5] ={1,2,3,4,5, 2,3,4,5,6 ,3,4,5,6,7};

在这里插入图片描述
图中左侧0、1、2表示行数,上面的数字表示列数。我们找二维数组的元素都是从行号0和列号0开始的,比如,第一行第三列的元素是5.
在这里插入图片描述
代码运行结果如图所示:
在这里插入图片描述

8.2二维数组的输入和输出

访问二维数组的单个元素的方法介绍之后,那么如何访问整个二维数组呢?
只要我们能够想办法按照一定的规律产生所有的行和列的数字就可以,以上面的代码为例子,行的范围在0-2;列的范围在0-4,我们可以借助循环来实现生成所有的下标。
在这里插入图片描述

9、二维数组在内存中的存储

像⼀维数组⼀样,我们如果想研究⼆维数组在内存中的存储⽅式,我们也是可以打印出数组所有元素
的地址的。代码如下:

在这里插入图片描述
通过输出的结果可以看出:每一行内部的每个元素都是相邻的,地址之间相差4个字节,跨⾏位置处的两个元
素(如:arr[0][4]和arr[1][0])之间也是差4个字节,所以⼆维数组中的每个元素都是连续存放的

在这里插入图片描述

10、C99中的变长数组

在C99标准之前,C语言在创建数组的时候,数组大小的指定只能使用常量、常量表达式,或者如果我
们初始化数据的话,可以省略数组大小。 (在C99之后引入变长数组的概念,使得数组大小可以用变量表示,但是VS2022版本不支持变长数组,即使用变量指定数组的大小)

int arr1[10];
int arr2[3+5];
int arr3[]={1,2,3};

这样的语法限制,让我们创建数组就不够灵活,有时候数组大了浪费空间,有时候数组又小了不够使用
的。

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

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

相关文章

基于单片机跑步机控制系统设计

** 文章目录 前言概要功能设计设计思路 软件设计效果图 程序文章目录 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…

【嵌入式裸机开发】智能家居入门3(MQTT服务器、MQTT协议、微信小程序、STM32)

前面已经写了两篇博客关于智能家居的,服务器全都是使用ONENET中国移动,他最大的优点就是作为数据收发的中转站是免费的。本篇使用专门适配MQTT协议的MQTT服务器,有公用的,也可以自己搭建 前言一、项目总览二、总体流程分析1、了解…

海外合规|新加坡推出智慧国2.0计划 设新网络安全与保障机构

智慧国2.0计划:政府将成立新机构杜绝网络伤害和援助受害者。政府将成立新机构,并制定新法令,以杜绝网络伤害行为和为受害者提供更多援助与保障。新加坡总理兼财政部长黄循财星期二(10月1日)在推介晚宴上,宣…

基于单片机的花色可调跑马灯设计

**基于单片机频率花色可调跑马灯 文章目录 前言概要设计思路 软件设计效果图 程序文章目录 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/A…

51c自动驾驶~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/11466109 #HTCL 超过所有视觉方案!HTCL:分层时间上下文问鼎OCC 本文是对ECCV2024接受的文章 HTCL: 的介绍,HTCL在SemanticKITTI基准测试中超过了所有基于相机的方法,甚至在和…

在pycharm中使用PySpark 出现Java gateway process exited before sending its port number.

# 原因是没有下载Java(jdk) 程序出现下面错误: 解决办法: 1、2、3、先点击“” ,添加这一行,点击确定即可。再次之前先判断你电脑上没有jdk,有的话,直接添加,也可以手动…

国庆节快乐前端(HTML+CSS+JavaScript+BootStrap.min.css)

一、效果展示 二、制作缘由 最近,到了国庆节,自己呆在学校当守校人,太无聊了,顺便做一个小demo帮祖国目前庆生!!! 三、项目目录结构 四、准备工作 (1)新建好对应的文件目录 为了方便&#xff…

【超详细】Python、JDK、vscode安装

Python 下载 首先去Python官网下载安装程序Python官网,鼠标悬浮到Download后选择推荐的Python版本(笔者为Windows系统故选择Windows版本安装程序) 之后点击打开文件,或者点击文件的图标打开下载的目录,打开下载好的安装程序 安装 首先勾…

测试-----BUG篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 软件测试的生命周期bug的概念描述bugbug的级别bug的生命周期 软件测试的生命周期 软件测试贯穿与软件的整个生命周期,它的具体流程是: 1.需求分析 2.测…

【初阶数据结构】排序——归并排序

目录 前言归并排序归并排序的非递归写法计数排序排序总结 前言 对于常见的排序算法有以下几种: 前面我们已经学习了: 【初阶数据结构】排序——插入排序【初阶数据结构】排序——选择排序【初阶数据结构】排序——交换排序 下面这节我们来看最后一个…

基于SSM的O20兼职系统的设计与实现(源码+定制+文档)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

P1010 [NOIP1998 普及组] 幂次方 Python题解

[NOIP1998 普及组] 幂次方 题目描述 任何一个正整数都可以用 2 2 2 的幂次方表示。例如 137 2 7 2 3 2 0 1372^7 2^3 2^0 137272320。 同时约定次方用括号来表示,即 a b a^b ab 可表示为 a ( b ) a(b) a(b)。 由此可知, 137 137 137 可表示…

光通信——PON系统典型组网

PON系统可同时承载包括Internet上网、VoIP语音、IPTV视频、TDM数据专线、以太网专线、基站回传等业务在内的多种业务,实现全业务承载,此外,还可通过三波方案承载CATV业务,实现“三网融合” 。 CATV(Community Antenna…

数字控制系统

目录 两轮自平衡式机器人的控制器设计 TMS320F28069 芯片特点 处理器引脚及功能 首先分析模型来确定控制原理 速度控制器 方向控制器 系统控制框架 智能平衡移动机器人PID控制 两轮自平衡式机器人的控制器设计 由于两轮自平衡式机器人的自不稳定性,控制起来…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8

目录 第四门课 卷积神经网络(Convolutional Neural Networks)第二周 深度卷积网络:实例探究(Deep convolutional models: case studies)2.7 Inception 网络(Inception network)2.8 使 用 开 源 …

C++容器之list基本使用

目录 前言 一、list的介绍? 二、使用 1.list的构造 2.list iterator的使用 3.list capacity 🥇 empty 🥇size 4.list element access 🥇 front 🥇 back 5.list modifiers 🥇 push_front 🥇 po…

Apache POI 2024/10/2

导入Apache POI的maven坐标 通过POI向Excel文件写入文件内容 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File; import java.…

在Linux系统安装Nginx

注意:Nginx端口号是80(云服务器要放行) 我的是基于yum源安装 安装yum源(下面这4步就好了) YUM源 1、将源文件备份 cd /etc/yum.repos.d/ && mkdir backup && mv *repo backup/ 2、下载阿里源文件 curl -o /etc/yum.repos.d/CentOS-Base.repo ht…

java OOP基础:类与对象(万字长文)

目录 类与对象 自定义类 对象的内存模型 “”赋值 对象引用:this 作为常量的对象变量:final 判等操作 1. “重写(override)”基类的equals()方法 2. “重载(overload)”equals()方法 对象的构造 有参构造与无…

腾讯云轻量服务器+宝塔面板+基于springboot的web网页部署

经历了一段时间的折磨,近期也在看数据挖掘,还有最优化算法,现在基于我上一篇的的问题上,现在你的情况是不是:本地已经存在一个Springboot的项目,在本地能够良好运行。现在你要做的是把自己的项目部署到网上…