数组之二维数组

article/2025/10/16 5:40:20

目录

一、二维数组的定义与引用

1、二维数组的定义 

2、二维数组的引用 

二、二维数组的赋值 

1、二维数组的初始化

三、二维数组的应用举例


一、二维数组的定义与引用

1、二维数组的定义 

一般格式:

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

其中,常量表达式1为行数,常量表达式2为列数

例如:int a[2] [3];

定义了 a是一个2行3列的数组,一共6个元素,分别是a[0] [0]、a[0] [1]、a[0] [2]、a[1] [0]、a[1][1]、a[1][2]。

像int a[2,3]这样的格式就是错误的。

二维数组的注意点与一维数组相同 

\bullet数组变量名后面的“[ ]”是数组的标志,里面的常量表达式可以是常量和符号常量,但是不能包含变量。 

\bullet 数据类型符表示数组元素的数据类型,可以是任何数据类型。例如常见的int型,float型,char型等。

\bullet数组变量名的命名规则与变量名相同,遵循标识符命名规则。

\bullet下标可以是整形常量、整形变量或整形表达式。

\bullet下标的最小值是0,最大值是数组大小减1。

2、二维数组的引用 

二维数组元素引用与一维数组元素引用一样,也要采取下标法。

引用形式:数组名[下标1] [下标2] 

 \bullet下标1和2可以是整形常量、整形变量或整形表达式。其编号从0开始。

注意:下标不能越界

 

二、二维数组的赋值 

1、二维数组的初始化

一般格式:

类型说明符    数组名 [行常量表达式] [列常量表达式]={{第0行初值表},{第2行初值表},{最后1行初值表}};

赋值规则为:将“第0行初值表”中的数据,依次赋给第0行中的各元素;将“第1行初值表”中的数据,依次赋给第1行元素;以此类推。下面给出例子。

例1:对数组元素全部赋值

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

其数组元素各自对应的值为:a[0] [0]=1,a[0] [1]=2,a[0] [2]=3,a[1] [0]=4,a[1] [1]=5,a[1] [2]=6。

也可以将数据写在一个花括号内,按数据在内存中的排序顺序对个元素赋初值

故上式也可直接写为int a[2] [3]={1,2,3,4,5,6}; 

例2:对数组元素部分赋值

int a[2] [3]={{1},{3}};

 其数组元素各自对应的值为:a[0] [0]=1,a[0] [1]=0,a[0] [2]=0,a[1] [0]=3,a[1] [1]=0,a[1] [2]=0。

也可以对各行中的某一元素赋值

如:a[2] [3]={{0,1,0},{0,0,3}};

 其数组元素各自对应的值为:a[0] [0]=0,a[0] [1]=1,a[0] [2]=0,a[1] [0]=0,a[1] [1]=0,a[1] [2]=3。

例3:如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但是第二维的长度不能省。

如:int a[2] [3]={ {1,2,3},{4,5,6}};

它等价于int a[ ] [3]={ {1,2,3},{4,5,6}};

三、二维数组的应用举例

例1:将二维数组行列元素互换,存到另一个数组中
在这里插入图片描述 

#include <stdio.h>
main()
{   int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("array a:\n");for(i=0;i<=1;i++){   for(j=0;j<=2;j++){   printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}    printf("array b:\n");for(i=0;i<=2;i++){   for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}
}

 

 

 


http://chatgpt.dhexx.cn/article/VVFJ6JvS.shtml

相关文章

JavaScript一维数组转二维数组

[1, 2, 3, 4, 5, 6, 7, 8] 实现效果 [[1, 2, 3, 4], [5, 6, 7, 8]] 1. slice截取 function fn(arr, num) {let newArr []const total Math.ceil(arr.length / num)console.log(total);for (let i 0; i < total; i) {a arr.slice(i * num, (i 1) * num)newArr…

js一维数组转二维数组(生成二维数组)

昨天遇到了一个需要对后端传来的一段数据做操作&#xff0c;是将一维数组转为二维数组&#xff0c;思考了半天&#xff0c;夜晚又和朋友讨论了一下&#xff0c;思路如下。&#xff08;毕竟我只是个切图仔&#xff09; let classRes [{className: 05,name: a1,age: 12,sex: 1},…

JS二维数组赋值问题

背景 定义二维数组并赋值 let list new Array(5).fill(new Array(3).fill(0))此时在给二维数组赋值时使用如下代码&#xff1a; list[2][1] 2看下赋值结束后的打印结果&#xff1a; 未达到预期。 ES6解析 我们看下阮一峰在es6中对fill的定义&#xff1a; 理解 这样就…

JavaScript 二维数组转一维数组

目录 1. flat() 2. reduceconcat 3. [ ].concat 4. concat.apply 5. toString split &#xff08;字符串或数值&#xff09; 6. 遍历判断 7.多维数组转一维数组 1. flat() 语法&#xff1a;var newArray arr.flat([depth]) depth(深度)&#xff1a;指定要提取嵌套数…

JavaScript生成二维数组

方法一&#xff1a; new Array(x).fill(new Array(y).fill(0)) 但注意&#xff0c;当一个对象被传递给fill方法时&#xff0c;填充数组的是这个对象的引用。即二维数组的第一个维度中的每一个数组都指向同一个引用&#xff0c;如果向第一个维度中的任一元素执行push&#xff0c…

js一维数组转二维数组

使用场景举例&#xff1a;接口返回一个数组对象&#xff0c;展示时每行固定显示n个&#xff0c;则可将返回的数组转成二维数组[[...n], [...n]...]的形式循环展示。 a.数组元素为基本类型&#xff1a; let baseArray [1, 2, 3, 4, 5, 6, 7, 8];len len baseArray.length;let …

js二维数组变为一维数组

1、用es5的reduce和concat组合 let list[[1,2,3],[4,5,6],[7,8],[9]]let listslist.reduce((a,b)>a.concat(b))console.log(lists)reduce的用法 数组方法reduce用来迭代一个数组&#xff0c;并且把他累积到一个值中。 使用 reduce 方法时&#xff0c;你要传入一个回调函数…

JavaScript 二维数组

二维数组&#xff1a;人为起的名字 二维数组本质上是以数组作为数组元素的数组&#xff0c;即“数组的数组”&#xff0c;类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵&#xff0c;行列数相等的矩阵称为方阵。对称矩阵a[i][j] a[j][i]&#xff0c;对角矩阵…

js 二维数组

js二维数组 我们经常会用到二维数组&#xff0c;但是javaScript没有二维数组&#xff0c;那么我们应该咋办呢&#xff1f;就是在一维数组里面在创建一个一维数组。 var arr new Array(10); for (var i 0; i < arr.length; i) {arr[i]new Array(8); //不一定写for循环赋值…

程序员必看的数组详解!

数组 什么是数组&#xff1f; 数组是一组数据有序的集合。数组它是属于复合数据类型。它至少可以存储一个值(它可以存储很多很多值)。 例如我们生活中的仓库&#xff0c;可以存放很多我们需要的工具或物品 为什么要使用数组&#xff1f; 因为在我们工作中 有很多数据是有关…

JavaScript二维数组和函数

一、二维数组 1、什么是二维数组&#xff1f; 通过两个下标&#xff08;索引&#xff09;来确定一个元素。二维数组可以理解为数组的数组。二维数组组织为矩阵&#xff0c;可以表示为行和列的集合。 2、创建方式 2.1、通过new Array&#xff08;&#xff09;创建 2.2、通过…

JavaScript之二维数组

JavaScript本身只支持一维数组&#xff0c;不支持直接定义二维数组&#xff0c;但是我们可以间接地实现二维数组 将一维数组的每个元素又定义为一个数组&#xff0c;即为数组中的元素也是数组&#xff0c;就是二维数组 <!DOCTYPE html> <html lang"en">…

Linux 信号signal\sigaction

转发&#xff1a;作者&#xff0c;故事狗 https://www.jianshu.com/p/f445bfeea40a Linux 信号signal 对于 Linux来说&#xff0c;实际信号是软中断&#xff0c;许多重要的程序都需要处理信号。信号&#xff0c;为 Linux 提供了一种处理异步事件的方法。比如&#xff0c;终端…

linux下sigaction函数,Linux sigaction函数 sa_flags的值

开始对sa_flags有疑问&#xff0c;网上搜到都是这一个程序&#xff0c;就复制来说事&#xff1a; 代码&#xff1a; 1 #include 2 #include 3 #include 4 #include 5 6 void show_handler (int sig) 7 { 8 printf ("i got signal %d\n",sig); 9 …

Linux signal、sigaction的使用总结

目录 一、什么是信号 二、信号的种类 三、信号的处理 —— signal()函数 四、信号处理 —— sigaction()函数&#xff08;扑获信号&#xff09; 五、扑获信号示例 一、什么是信号 信号是UNIX和Linux系统响应某些条件而产生的一个事件&#xff0c;接收到该信号的进程会相应地采取…

sigaction 函数

今天查一个问题&#xff0c;SIGWINCH的处理函数一直不执行&#xff0c;耽搁了不少时间&#xff0c;最后发现是另外一个地方也设置了&#xff0c;处理函数是另外的。。。。 顺便记录下使用例子&#xff1a; 使用 sigaction 函数&#xff1a; signal 函数的使用方法简单&#xf…

信号、signal 函数、sigaction 函数

文章目录 1.信号的基本概念2.利用 kill 命令发送信号3.信号处理的相关动作4.信号与 signal 函数4.1 signal 函数示例一4.2 signal 函数示例二 5.利用 sigaction 函数进行信号处理6.利用信号处理技术消灭僵尸进程 1.信号的基本概念 发送信号是进程之间常用的通信手段。信号用来…

linux sigaction详解

参看文档&#xff1a; https://blog.csdn.net/weixin_43743847/article/details/90299204https://blog.csdn.net/u010150046/article/details/77344438https://bbs.csdn.net/topics/370255407 一&#xff1a;函数原型介绍 int sigaction(int signum, const struct sigaction …

sigaction函数

#include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); //The sigaction() system call is used to change the action taken by a process on receipt of a specific signal. sigaction()系统调用用于改变进程在接收…

c语言sigaction,c语言信号处理sigaction

c语言信号处理sigaction (2011-04-18 23:45:19) 标签: c语言 信号处理 sigaction sighup it 分类: c 信号安装函数sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千万别弄…