首页 > 其他分享 >二维和多维数组概念

二维和多维数组概念

时间:2024-06-10 20:59:56浏览次数:18  
标签:初始化 元素 维度 二维 数组 列数 多维

目录

1、二维数组

2、多维数组


1、二维数组

在C语言中,当你定义一个二维数组时,你需要指定两个维度:行数和列数。

二维数组就是在一维的数组上再嵌套了一层数组上去,使数组获得一种矩阵的假象。

    int a[3][4]

  • int是数组中元素的数据类型
  • a 是数组的名称,即标识符。
  • 3 是数组的行数。
  • 4 是数组的列数。

二维数组可以不写行数但是一定要写列数,例如:a【 】【4】这样是可以的,系统会自动算出要多少行。但是不能只有行数没有列数,例如:a【3】【】。

a 是一个二维数组,列数是固定的(为4),但行数是由初始化列表中的行数来确定的。编译器会自动计算行数,并为数组分配正确的内存。

然而,如果你试图只指定行数而不指定列数,例如 int a[3][];,编译器将会报错,因为它无法确定每一行应该分配多少内存。

二维数组初始化

它有3行和4列,你可以这样写:

在这个例子中,每个内部的花括号 {} 包含了一行的元素,元素的数量必须与列数 columnCount(在这个例子中是4)相匹配。如果某一行的初始化元素少于列数,那么该行剩余的元素将被初始化为该类型的默认值(对于 int 类型是0)。如果整个二维数组没有提供初始化列表,那么所有的元素都将被初始化为该类型的默认值。

你可以通过索引来访问数组中的元素。在C语言中,数组索引是从0开始的,所以arr[0][0]访问的是第一行第一列的元素,arr[2][3]访问的是第三行第四列的元素(注意,因为索引从0开始,所以第三行实际上是索引为2的行,第四列是索引为3的列)。

以下是一个简单的示例,展示了如何定义和初始化一个3行4列的二维数组,并打印和修改其内容:

2、多维数组

在C语言中,除了二维数组,你还可以定义更高维度的数组,这些统称为多维数组。但是,在实际编程中,二维数组是最常用的,因为三维或更高维度的数组在理解和处理上会更加复杂。不过,C语言确实支持定义三维或更多维度的数组。

以下是定义多维数组的基本形式:

  • type 是数组中元素的数据类型。
  • arrayName 是数组的名称。
  • dim1dim2 和 dim3 分别是数组的第一维、第二维和第三维的大小。

例:  定义一个整型三维数组,它有2个“块”,每个“块”有3行4列:

这个数组 cube 可以看作是由2个二维数组(或矩阵)组成的“立方体”。每个二维数组有3行4列。

更高维度的数组

对于更高维度的数组,你可以继续扩展上面的定义形式,添加更多的维度大小。但是,由于这些数组在理解和处理上的复杂性,它们在实际编程中并不常用。

初始化多维数组

在这个例子中,cube 是一个三维数组,包含两个二维数组,每个二维数组又包含4个整数。在C语言中,当你初始化一个多维数组时,你需要为每一维都提供一个初始值列表,并且这些列表需要用花括号 {} 正确地嵌套起来。如果某个内部列表的元素数量少于该维度的大小,那么剩余的元素将会自动被初始化为该类型的默认值(对于整数类型,默认值是0)。

以下是一个更详细的例子,说明了如何初始化一个三维数组,并说明了如果某个内部列表的元素少于该维度的大小时,剩余元素将如何被初始化:

标签:初始化,元素,维度,二维,数组,列数,多维
From: https://blog.csdn.net/2301_76378962/article/details/139581786

相关文章

  • 代码随想录算法训练营第三十五天 | 1005.K次取反后最大化的数组和 134.加油站 135.分
    1005.K次取反后最大化的数组和题目链接文章讲解视频讲解思路:  按绝对值从大到小排序  遍历数组,遇到负数,如果次数未用完就取反  最后如果剩余次数未用完且为奇数就将数组最后一个元素取反classSolution{staticboolmyCompare(constint&lhs,constint&r......
  • 每日一题(LeetCode 34题,在排序数组中查找元素的第一个和最后一个元素)
    题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题示例1:输入:nums=[5,7,7,8,8,10],......
  • 代码随想录——数组
    给定一个n个元素有序(升序)的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1.//这个题说实话从逻辑上来看实在是太简单了,但是为什么每一次我写起来都感觉隐隐约约有点问题,为什么呢?就是因为我的问题没有得到解决,我只是一味的去逃......
  • python快速生成二维码及读取二维码内容 pyqrcode MyQR pyzbar
    目录效果图生成二维码方式1:pyqrcode方式2:MyQR  读取二维码效果图生成二维码方式1:pyqrcode安装pipinstallpyqrcode代码实现importpyqrcode#text为保存在二维码的内容。text为完整链接时,扫描后可直接跳转到该链接text='https://www.baidu.com/'qr=pyqrc......
  • Java 数据类型 -- Java 语言的 8 种基本数据类型、字符串与数组
    大家好,我是栗筝i,这篇文章是我的“栗筝i的Java技术栈”专栏的第004篇文章,在“栗筝i的Java技术栈”这个专栏中我会持续为大家更新Java技术相关全套技术栈内容。专栏的主要目标是已经有一定Java开发经验,并希望进一步完善自己对整个Java技术体系来充实自己的......
  • 手绘二维码
    看到二维码,很容易猜到黑白相间的小方格就是二进制比特。那么这些比特是怎么得到的?小方格又是按照什么规则排布的?今天咱们就从零开始将一个url画成二维码。考虑到大多数人可能不太了解二维码,所以先讲下基础概念。你也可以先看看左耳朵耗子写的二维码的生成细节和原理。版本二......
  • 指针和数组
    同一指针相减的绝对值得到的是之间元素的个数#include"stdio.h"#include"string.h"intmain(){intarr[10]={0};printf("%d\n",&arr[9]-&arr[0]);return0;}不同类型的指针减去指针没有意义地址加地址,指针加指针没有意义地址向后移,指针相比较,指......
  • Vuforia AR篇(七)— 二维码识别
    目录前言一、什么是Barcode?二、使用步骤三、点击二维码显示信息四、效果前言在数字化时代,条形码和二维码已成为连接现实世界与数字信息的重要桥梁。Vuforia作为领先的AR开发平台,提供了BarcodeScanner功能,使得在Unity中实现条形码和二维码的识别变得简单而高效。本......
  • 【华为OD】D卷真题100分:数组拼接 JavaScript代码实现[思路+代码]
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客JS、Java、C、C++、python代码实现:【华为OD】D卷真题100分:数组拼接JavaScript代码实现[思路+代码]-CSDN......
  • 请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有
    //请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。#include<stdio.h>intfun(int*a){intresult[100];intcount=0;for(inti=1;i<=100;i++){......