C语言 二维数组定义和使用 - C语言零基础入门教程

目录

  • 一.二维数组简介
  • 二.定义二维数组并初始化
    • 1.定义二维数组
    • 2.初始化二维数组
  • 三.访问二维数组
  • 四.修改二维数组
  • 五.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.二维数组简介

C 语言中,一组数据的集合称为数组 Array ,也称为一维数组,比如:字符串 char ,实际上也算是数组,字符串由多个字符构成;

而二维数组和一维数组类似,简单理解就是:二维数组由多个一维数组构成,语法如下:

type arrayName [ x ][ y ];
//x的取值范围:0 <= index < x   下标重0开始,最大值为x-1,否则会产生下标越界
//y的取值范围:0 <= index < y   下标重0开始,最大值为y-1,否则会产生下标越界

因此,数组中的每个元素是使用形式为 a[ i , j ] 的元素名称来标识的,其中 a 是数组名称,i 和 j 是唯一标识 a 中每个元素的下标。

二维数组中的每一个数据叫做数组元素 Element ,二维数组中的每个元素都有一个序号,这个序号由 xy 组成(即横向坐标和纵向坐标),都是从 0 开始,例如,a[0][6] 表示第1行第7个元素,a[3][1] 表示第 4 行第2个元素;

举个例子:定义一个这样的二维数组

int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vho32HiP-1629616389974)(https://www.codersrc.com/wp-content/uploads/2021/06/e4da3b7fbbce234.png “C语言 二维数组定义和使用-猿说编程”)]

二维数组本质就是一个一维数组。如果把二维数组的每一行看成一个整体,即看成一个数组中的一个元素,那么整个二维数组就是一个一维数组。

二.定义二维数组并初始化

1.定义二维数组

要想把数据放入内存,必须先要分配内存空间。例如:放入4个一维数组,8个整数,即 4 行 8 列:

//整形数组
int a[4][8];//由4个一维数组构成,索引值0~3;每个一维数组中有8个整形变量,索引值0~7;
//浮点数数组
float a[4][8];//由4个一维数组构成,索引值0~3;每个一维数组中有8个浮点数变量,索引值0~7;
//浮点数数组
double a[4][8];//由4个一维数组构成,索引值0~3;每个一维数组中有8个浮点数变量,索引值0~7;
//字符串
char a[4][8];//由4个一维数组构成,索引值0~3;每个一维数组中有8个字符变量,索引值0~7;

2.初始化二维数组

A.在定义二维数组的同时赋值

多维数组可以通过在括号内为每行指定值来进行初始化。下面是一个带有 3 行 4 列的数组。

int a[3][4] = {{0, 1, 2, 3} ,   /*  初始化索引号为 0 的行 */{4, 5, 6, 7} ,   /*  初始化索引号为 1 的行 */{8, 9, 10, 11}   /*  初始化索引号为 2 的行 */
};

内部嵌套的括号是可选的,下面的初始化与上面是等同的:

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

B.根据二维数组下标对数组元素赋值

在通过下标修改二维数组的值时,需要注意 数组下标越界 的问题;

a[4][2];  //定义一个二维数组
a[0][0]=10;
a[0][1]=20;
a[1][0]=30;
a[1][1]=40;
a[2][0]=50;
a[2][1]=60;
a[3][0]=70;
a[3][1]=80;
//a[0][3]=20; //错误写法,下标越界
//a[0][2]=20; //错误写法,下标越界
//a[4][2]=20; //错误写法,下标越界
等价:
a[4][2]= {10,20,30,40,50,60,70,80}
等价:
a[4][2] = {{10,20},{30,40},{50,60},{70,80}
}

C.只给部分元素赋初值,当{ }中值的个数少于元素个数时,只给前面部分元素赋值,后面的元素默认为0

//案例一
int a[3][4] = {{1},{2},{3}};
等价:
int a[3][4] = {{1,0,0,0},{2,0,0,0},{3,0,0,0}};
//案例二
int a[3][4] = {{1}};
等价:
int a[3][4] = {{1,0,0,0},{0,0,0,0},{0,0,0,0}};

当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为 0

对于short、int、long,就是整数0;
对于char,就是字符 '\0';
对于float、double,就是小数0.0。

三.访问二维数组

**数组中的每个元素都有一个序号,这个序号从 0 开始,称为下标 index ,例如,a[0][2] 表示第 1 行第 3 个元素,a[3][5] 表示第 4 行第 6 个元素。所以我们可以直接通过下标访问数组中元素的值,**例如:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 二维数组定义和使用
//@Time:2021/06/12 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include <stdio.h>
int main(void) {int a[3][4] = {{1,2,3,4},{2,4,6,8},{3,6,9,0}};for (int i = 0 ;i<3;i++) {for(int j = 0;j<4;j++)printf("a[%d][%d] = %d  ",i,j,a[i][j]);//根据下标查询//换行printf("\n");}return 0;
}
/*
输出:
a[0][0] = 1  a[0][1] = 2  a[0][2] = 3  a[0][3] = 4
a[1][0] = 2  a[1][1] = 4  a[1][2] = 6  a[1][3] = 8
a[2][0] = 3  a[2][1] = 6  a[2][2] = 9  a[2][3] = 0
*/

四.修改二维数组

**我们既然可以通过数组下标访问数组的值,那么同样也可以使用下标修改数组的值,**例如:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 二维数组定义和使用
//@Time:2021/06/12 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include <stdio.h>
int main(void) {int a[3][4] = {{1,2,3,4},{2,4,6,8},{3,6,9,0}};for (int i = 0 ;i<3;i++) {for(int j = 0;j<4;j++)printf("a[%d][%d] = %d  ",i,j,a[i][j]);//根据下标查询//换行printf("\n");}printf("-------------------------------------------\n");//修改数组的值for (int i = 0 ;i<3;i++) {for(int j = 0;j<4;j++)a[i][j] *= 10 ;//等价 a[i][j] = a[i][j] * 10//换行printf("\n");}//查询修改后数组的值for (int i = 0 ;i<3;i++) {for(int j = 0;j<4;j++)printf("a[%d][%d] = %d  ",i,j,a[i][j]);//根据下标查询//换行printf("\n");}return 0;
}
/*
输出:
a[0][0] = 1  a[0][1] = 2  a[0][2] = 3  a[0][3] = 4
a[1][0] = 2  a[1][1] = 4  a[1][2] = 6  a[1][3] = 8
a[2][0] = 3  a[2][1] = 6  a[2][2] = 9  a[2][3] = 0
-------------------------------------------
a[0][0] = 10  a[0][1] = 20  a[0][2] = 30  a[0][3] = 40
a[1][0] = 20  a[1][1] = 40  a[1][2] = 60  a[1][3] = 80
a[2][0] = 30  a[2][1] = 60  a[2][2] = 90  a[2][3] = 0
*/

五.猜你喜欢

  1. 安装 Visual Studio
  2. 安装 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸载
  4. Visual Studio 2003/2015 卸载
  5. C 语言格式控制符/占位符
  6. C 语言逻辑运算符
  7. C 语言三目运算符
  8. C 语言逗号表达式
  9. C 语言 sizeof 和 strlen 函数区别
  10. C 语言 strcpy 和 strcpy_s 函数区别
  11. C 语言 memcpy 和 memcpy_s 区别
  12. C 语言 数组定义和使用
  13. C 语言 数组遍历
  14. C 语言 数组排序 – 冒泡法排序
  15. C 语言 数组排序 – 选择法排序
  16. C 语言 数组排序 – 插入法排序
  17. C 语言 数组排序 – 快速法排序
  18. C 语言 数组下标越界
  19. C 语言 数组内存溢出
  20. C 语言 数组下标越界和内存溢出区别
  21. C 语言 二维数组定义和使用

未经允许不得转载:猿说编程 » C 语言 二维数组定义和使用

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

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

相关文章

云头条 |华为发布鲲鹏920;高通新推智能座舱芯片;Github重磅更新

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;偶是“CSDN 云计算”微信公众号新晋成员一枚“头条君”。第一次和大家见面&#xff0c;先做个自我介绍吧&#xff0c;头条君带来的【云头条】特别栏目&#xff0c;会在未来的日子里&#xff0c;无论…

全网最细之抽象类讲解

package com.wuming.oop.demo08; //子类继承了抽象类&#xff0c;就要实现抽象类的所有方法&#xff0c;除非子类也是抽象类&#xff0c;就子子类去实现 public abstract class A extends Action{ /* Overridepublic void doSomething() {}*/ }package com.wuming.oop.demo0…

BugkuCTF-MISC题隐写2

下载文件welcome.jpg 通过binwalk分离出文件&#xff0c;_welcome.jpg.extracted文件夹 爆破压缩包&#xff0c;得到解压密码为871 通过010editor打开解压图片&#xff0c;得到base64编码 解码即可

C语言 二维数组行数和列数计算 - C语言零基础入门教程

目录 一.计算一维数组长度二.计算二维数组长度 1.二维数组行数2.二维数组列数3.二维数组的元素个数 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.计算一维数组长度 在前面很多文章都介绍了关于普通数组计算…

Istio调用链埋点原理剖析—是否真的“零修改”分享实录

戳蓝字“CSDN云计算”关注我们哦&#xff01;来自&#xff1a;容器魔方作者&#xff1a; idouba本文整理自华为Cloud BU技术专家在K8S技术社上关于Istio调用链的分享。前言大家好&#xff0c;我是idouba&#xff0c;来自华为Cloud BU&#xff0c;当前在做Istio服务网格在华为云…

全网最细之接口的定义与实现

package com.wuming.oop.demo09;public interface TimeService {void timer(); }package com.wuming.oop.demo09;//interface 定义的关键字&#xff0c;接口都需要有实现类 /*接口作用 * 1.约束 * 2.定义一些方法&#xff0c;让不同的人实现~ 10 --->1 * 3.接口所有的定义方…

BugkuCTF-MISC题隐写3

考点&#xff1a;修改高度得到flag 下载图片dabai.png 以010editor打开图片没有flag 打开图片显示CRC出错&#xff0c;通过tweakpng打开图片修改CRC&#xff0c;并修改Height后 发现flag flag{He1l0_d4_ba1}

C语言 二维数组遍历 - C语言零基础入门教程

目录 一.计算一维数组长度二.计算二维数组长度 1.二维数组行数2.二维数组列数3.二维数组的元素个数 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.计算一维数组长度 对于 type array[A]形式的数组&#xff…

有问有答 | 你真的理解微服务架构吗?

戳蓝字“CSDN云计算”关注我们哦&#xff01;过去几年来&#xff0c;“微服务架构”这个术语出现了&#xff0c;它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。近几年微服务吵的也比较火&#xff0c;那么为什么微服务会受到这么多的关注&#xff1f;今天&a…

全网最细之N种内部类详细讲解

package com.wuming.oop.demo10;public class Outer {private int id10;public void out(){System.out.println("这是外部类的方法");}public class Inner{//如class前加static&#xff0c;id报红&#xff0c;因为静态的先加载&#xff0c;即静态的无法访问非静态的p…

BugkuCTF-MISC题有黑白棋的棋盘

下载了三个加密的zip压缩文件 其里一个名为4easynum.zip&#xff0c;很明显提示密码是四位数&#xff0c;爆破得到7760 打开得到一个图片和文本&#xff1a; 图片解出来是棋盘的压缩包密码 棋盘是flag的密码 题目描述也提示了&#xff0c;这个是古精灵语密码 对照得到棋盘的压…

C语言 指针声明和定义 - C语言零基础入门教程

目录 一.指针简介 1.内存2.内存地址3.指针声明 二.指针类型三.声明并初始化一个指针 1.声明指针并直接初始化 – 推荐2.先声明指针在初始化 – 不推荐 四.查看指针地址和指针的值五.NULL 指针 – 空指针六.重点总结七.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >&g…

有问有答 | AWS使用精华问答,带您开启 AWS 上的云计算之旅!

戳蓝字“CSDN云计算”关注我们哦&#xff01;AWS作为业界领先的云服务提供商&#xff0c;提供多种多样的高可靠性服务。那么究竟该如何使用AWS呢&#xff1f;今天的有问有答栏目&#xff0c;将带您开启 AWS 上的云计算之旅&#xff01;1Q&#xff1a;请问RDS相较自建MySQL on E…

异常之详解

定义&#xff1a;软件运行过程中&#xff0c;遇到输入不符合要求&#xff0c;程序打不开文件&#xff08;文件可能不存在或格式不对&#xff09;&#xff0c;空指针&#xff0c;内存或硬盘满了&#xff0c;网络连接失败&#xff0c;非法参数等等这些异常问题&#xff0c;称为异…

C语言 指针 p++ / p-- - C语言零基础入门教程

目录 一.变量 i/i–二.指针 p/p– 1.通过下标访问数组元素2.通过指针偏移访问数组元素 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.变量 i/i– 在前面的文章 自加自减运算符( i /i ) 中介绍了关于变量自增和自减的运算&#xff0c;举个…

BugkuCTF-MISC题又一张图片,还单纯吗

下载文件得到一张图片file.jpg 以010editor打开图片没有flag 以binwalk: 发现没有分离成功 以foremost: 生成file文件夹 得到flag

要闻君说:5G手机真的来了?TCL转型科技企业!鹅厂云部门发布态势报告, DDoS攻击正式进入Tb时代!天上“跑”起出租车?...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 图片来自腾讯《一线》岁末年初&#xff0c;真是一波“内部调整热”。要闻君得知&#xff0c;联想集团执行副总裁兼中国区总裁刘军选择在晚上发布了一封内部邮件&#xff0c;至此中国…

C语言 *p++/*(p)++/*(p++)/*p++ - C语言零基础入门教程

目录 一.简介二.*p三.* p/ *p四.* (p)与*(p)五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.简介 *p/*(p)/_(p)/_p运算规律: 1.如果 *和/--都在指针变量的左边&#xff0c;结合方向为从右到左&#xff1b;2.如果 *和/--分别在指针变量的左…

BugkuCTF-MISC题这是一张单纯的图片

图片隐写&#xff1a; 第一步&#xff1a;下载好图片&#xff0c;010editor打开图片 第二步&#xff1a;仔细观察&#xff0c;你会发现结尾处一栏出现了像unicode的编码。所以优先考虑是unicode编码。 复制这段unicode编码使用在线转码工具进行解码&#xff0c;找到flag&…

C语言 使用指针遍历数组 - C语言零基础入门教程

目录 一.使用数组下标遍历数组 1.计算数组元素个数2.通过下标遍历数组 二.使用数组首地址偏移遍历数组三.使用指针遍历数组四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.使用数组下标遍历数组 数组中的每个元素都有一个序号&#xff0c;这…