亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

C 語言中的多維數組

C 語言中的多維數組與我們在數學中學習到的多維數組是一致的。如果你還不知道什么是多維數組也沒有關系。多維數組可以看成是之前學習過的數組的擴展。它能讓你完成一些僅僅依靠一維數組沒有辦法完成的事情。讓很多事情完成的更為簡單。

1. 多維數組的聲明

多維數組可以看作是一維數組的擴展。所以,它的聲明就是在之前學習的數組,也叫一維數組,之后繼續添加大括號,如果添加一組大括號,那么稱之為二維數組,以此類推,就構成了 N 維數組。

int intArray[A1][A2][A3][...][An]
int intArray[2][2];  // 二維數組
float floArtay[3][4][5]; // 三維數組

與一維數組中的聲明類似,在多維數組中,第如果直接進行定義初始化,那么一個維數可以不指定,但是后面的維數是要明確指定的。

例如:

int intArray[][5][3]

2. 多維數組初始化

多維數組和一維數組一樣,可以將全部的值一次完全賦給數組,也可以只初始化部分內容。你可以如同之前的一維數組一樣,在大括號中以此寫入初始化的數值。但是出于可讀性的考慮,你最好按照數組的維數,用大括號對應。就如同下面的例子中一樣。

short a[2][2] = { 1, 2, 3, 4};
short b[2][2] = { {1, 2}, {3, 4}};
short c[2][2] = { 3, 4};
short d[2][2] = { {}, {3, 4}};

上面這些變量初始化中,數組 a 的初始化方式和之前我們介紹過的一樣。但是這樣在多維數組中是我們不推薦的。因為在對應關系顯示不明顯。

數組 b 的初始化方式是我們推薦的,這種初始化看上去對應關系比較明了。當然缺點是我們要輸入很多個括號。

數組 C 是進行了部分初始化,將 c[0][0] 和 c[0][1] 兩個位置賦值為 3 和 4,其它位置會自動賦值為 0 。

多維數組與一維數組一樣,一定要先初始化或者賦值后才能使用。否則也會產生未知的錯誤。

數組 d 展示了采用對應維數的大括號的便捷之處。我們這里只給 d[1][0] 和 d[1][1] 賦值,而沒有給前面的兩個位置賦值。

3. 多維數組的使用

多維數組的賦值與取值與之前的一維數組是一樣的。通過索引位置直接獲取相應的數值或者進行賦值操作。例如 a[2][3] = 12 。

由于有多維的存在。我們想要獲取其中的每一個數值的時候,就要使用循環的嵌套。一般情況下,有幾個維度,就要使用幾重的嵌套。

4. 示例

#include <stdio.h>

int main()
{
    short a[2][2] = {{}, {3, 4}};
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            printf("a[%d][%d] = %d\n", i, j, a[i][j]);
        }
    }

    int b[][2] = {{1, 2}, {3, 4}};
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            printf("b[%d][%d] = %d\n", i, j, b[i][j]);
        }
    }

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

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            for (int k = 0; k < 2; k++)
            {
                printf("c[%d][%d][%d] = %d\n", i, j, k, c[i][j][k]);
            }
        }
    }

    return 0;
}

運行結果:

a[0][0] = 0
a[0][1] = 0
a[1][0] = 3
a[1][1] = 4
b[0][0] = 1
b[0][1] = 2
b[1][0] = 3
b[1][1] = 4
c[0][0][0] = 1
c[0][0][1] = 2
c[0][1][0] = 3
c[0][1][1] = 4
c[1][0][0] = 5
c[1][0][1] = 6
c[1][1][0] = 7
c[1][1][1] = 8
c[2][0][0] = 9
c[2][0][1] = 10
c[2][1][0] = 11
c[2][1][1] = 12

示例程序里面通過 3 種不同的方式初始化了 a、b、c 三個多維數組,其中 a 與 b 數組是 2 維數數組,c 是 3 維數組。

這里在初始化數組的時候,我們采用通常建議的多層大括號的組織方式,這種方式雖然使用了更多的括號,但是可讀性會更強,更有條理性。

在多維數組的使用中,會采用多層的嵌套循環來進行內部全部變量的賦值或者取值操作,如果只是想對于數組中的某一個位置上的數值進行修改,只要直接使用其索引位置就可以了,如 a[0][1] = 100 等。

5. 小結

多維數組可以被看做是之前介紹的一維數組的擴展。其基本的聲明就是在一維數組的基礎上,根據需要在后面添加成對的方括號即可。其初始化過程與一維數組類似,只不過為了增加代碼的可讀性,便于查錯和維護的需要,建議在初始化過程中使用大括號來分組賦值。多維數組的使用也有一維數組無異。只不過需要用到多重嵌套的循環來進行遍歷每一個數值。