【从零开始的 C 语言笔记】第十六篇-二维Array

不怎麽重要的前言

上一篇介绍了跟处理字串有关的String函式库,也使用了很多例子来介绍函式的使用,不晓得这样有没有清楚一些?

趁不久前介绍的第十三篇Array,今天我们来介绍二维array!


一维array、二维array?

大家对於一维、二维的概念大概来自於数学,一维是线、二维是平面而三维空间,但阵列的一、二维可能会有点像,但跟大家想的不太一样,还记得在第十三篇介绍的阵列吗,那种类型的阵列就是一维的单一排列,而阵列的二维、多维则是有点像巢状的结构。

下面我们来举个二维阵列的例子:

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

可以看到这样子阵列中又包着阵列的形式会称为多维,而多维就是这样延伸下去。


正式使用二维阵列

  1. 介绍
    二维阵列基本上如同一维阵列的使用方式。

(1) 宣告:不可以只有赋值。
a. 只宣告阵列大小

int arr[2][3];

b. 宣告阵列大小同时赋值

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

(2) index:二维阵列的index仍是由0开始,而「阵列名称[index1][index2]」由左而右,对应阵列结构则是由外而内,各自的index则是分开计算像是下图。
https://ithelp.ithome.com.tw/upload/images/20211028/201425650nytV8MwbW.png

可以参考以下程序码。

#include <stdio.h>
#include <string.h>

int main(void)
 {
    int arr[3][2] = {{1,2},{3,4},{5,6}};

    printf("arr[0][0]: %d\n",arr[0][0]);
    printf("arr[0][1]: %d\n",arr[0][1]);
    printf("arr[1][0]: %d\n",arr[1][0]);
    printf("arr[1][1]: %d\n",arr[1][1]);
    printf("arr[2][0]: %d\n",arr[2][0]);
    printf("arr[2][1]: %d\n",arr[2][1]);
 }

https://ithelp.ithome.com.tw/upload/images/20211028/20142565nbig5m9aY8.png

  1. 实际应用
#include <stdio.h>
#include <string.h>

int main(void)
 {
    int arr[3][2] = {{1,2},{3,4},{5,6}};

    printf("arr[0][0]: %d\n",arr[0][0]);
    printf("arr[0][1]: %d\n",arr[0][1]);
    printf("arr[1][0]: %d\n",arr[1][0]);
    printf("arr[1][1]: %d\n",arr[1][1]);
    printf("arr[2][0]: %d\n",arr[2][0]);
    printf("arr[2][1]: %d\n",arr[2][1]);

    printf("---\n");

    arr[1][0] = 0;
    printf("arr[0][0]: %d\n",arr[0][0]);
    printf("arr[0][1]: %d\n",arr[0][1]);
    printf("arr[1][0]: %d\n",arr[1][0]);
    printf("arr[1][1]: %d\n",arr[1][1]);
    printf("arr[2][0]: %d\n",arr[2][0]);
    printf("arr[2][1]: %d\n",arr[2][1]);
 }

https://ithelp.ithome.com.tw/upload/images/20211028/20142565DBMZlnCM7g.png


看到这里就大概介绍完多维阵列的概念啦,可以多多尝试方便熟悉操作!

下一章我们来介绍if条件式!


<<:  【从零开始的 C 语言笔记】第十五篇-String 函式库介绍与应用

>>:  JS 45 - 是否要离开网站?可能无法储存您所做的变更。

16 综观各校资工系修课蓝图

资讯工程学系(Computer Science and Information Engineerin...

Day 29 - Rancher Fleet Helm + Kustomize 应用程序部署

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

将机器人部属到网路上去

开始部属 点击 登入後会看到这个画面 点击左上方的加号 进行第一次的线上coding 在main上输...

【从零开始的Swift开发心路历程-Day2】牛刀小试

昨天轻松的安装完Xcode环境後,想必各位已经迫不及待想大显身手了吧! 但是吃紧弄破碗,就让我们先来...

【资料结构】图的基本定义

一个图形具有两个集合的基本组成:G(V,E) V:表示顶点的集合 V(G1)={1,2,3,4} E...