簡體   English   中英

c++ 中的簡單二維數組矩陣

[英]simple 2D array matrix in c++

我絕對是 cpp 的新手,我嘗試編寫一個簡單的二維數組矩陣。 這就是我所說的:


#include <iostream>
#include <string>

using namespace std;


void printTable()
{

    int tabelle [10][10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int i, j;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            printf("%d   ", tabelle[i][j]);
        }
        printf("\n");
    }
}


int main(int argc, char* argv[])
{
    printTable();


    return 0;
}

這是它的樣子:

1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

這就是它的樣子:

1 2 3 4 5 6 7 8 9 10
2 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0

感謝任何建議:D

這不是 C++ 中數組分配的工作方式。 將二維 arrays 視為一維 arrays 的一維數組。

int tabelle[10][10] = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {3, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {5, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {7, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {8, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {9, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {10, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
  • 您的代碼工作正常,二維數組由一維數組組成。
  • 這里二維數組 tableelle[10][10] 的第一個一維數組 tablelle[0] 用元素初始化。
  • 另一件事是部分初始化的數組填充元素的 rest
    零,這就是為什么所有其他元素都為零。

有幾種不同的方法可以初始化二維數組,結果相同:

    int tab[4][4] = {{1,2,3,4},{2},{3},{4}};
    int bat[4][4] = {1,2,3,4,2,0,0,0,3,0,0,0,4,0,0,0};

需要記住的是,這種數組是由編譯器自動分配到棧上的,並作為線性順序數組存儲在 memory 中(參見上面的第二種方法)。

Also, for C++, the array you create in a function by automatic allocation in this manner has a scope limited to that function; function 調用結束后,數組消失了。 如果要在 function 中創建一個數組並將其傳回給主 function 使用,它必須是動態(堆)分配的; 然后,您將指向該數組的指針傳遞回 main,然后您必須手動管理 memory(假設您沒有使用智能指針來實現它)。

注意:對於非常大的 arrays,您還可以按如下方式啟動陣列:

   myarray[100][100] = {};    //sets all elements to 0
   for (int i = 0; i < 100; i++) {
       myarray[0][i] = i + 1;
       myarray[i][0] = i + 1;
   }

永遠不要這樣做:

    myarray[100][100];

因為這會創建一個充滿垃圾值的數組,其中加載了之前碰巧存儲在該 memory 位置中的任何隨機位,並且您以后可能會忘記覆蓋它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM