C語言 二維數組定義和使用 - C語言零基礎入門教程


目錄

零基礎 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 語言 二維數組定義和使用

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM