簡體   English   中英

在C中打印空的2d數組

[英]Printing an empty 2d Array in C

我正在編寫一個采用2D數組並使用開關盒的程序,您可以指示它填充隨機數和/或打印數組等。

在我用隨機數填充數組之前,我去打印數組只是為了看看它會做什么,我得到了這個:

 176185448    1    1    01430232144
 32767180624652332767143023216832767
 143023216832767    0    11430232192
 32767176185344    1    0   14
 143023220832767    0    0    0
     0    0    0    0    0

這是我的打印數組函數的代碼,我從main傳遞plist:

 void PrintArray2D(int plist[M][N])
  {
  size_t row, column; //counter

    for (row = 0; row < M; ++row) 
    {
        for (column = 0; column < N; ++column) 
        {
            printf ("%5d" , plist[row][column]);
        }

        printf ("\n");
    }
}

我的程序工作正常。 當我填寫隨機數然后打印時,我的輸出是正確的。 數組大小是6乘5.我只是好奇為什么,當它應該是一個空數組時,任何東西都被打印出來。 對於我得到的具體輸出更加好奇。

您正在打印未初始化數組的值。 在這種情況下,程序的行為是未定義的 您可能得到任何預期或意外結果的東西。
您獲得的值可能是存儲在該位置的某個先前值(稱為垃圾值)。 您的程序可能會產生錯誤的結果。

你在初始化陣列嗎?

如果沒有,你很可能事先得到記憶中的遺體。

要快速將其初始化為全零,無論它在何處定義都具有類似的功能

int list[M][N] = {0};

只是一個警告,零並不意味着將所有值設置為0.它將第一個元素設置為花括號的內容。 所以:

int values[M] = {1,2,3};

將前三個數字設置為1,2和3,將余數設置為零。

必須初始化C中的變量。 如果你沒有初始化一個變量(比如一個數組)它包含一些非邏輯數字(比如一個內存單元的地址 - 以前在那個內存位置的值)你要打印的東西是那個! 你不能在像Java這樣的語言中這樣做,如果你這樣做,就會出現編譯錯誤。 我希望這有幫助

暫無
暫無

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

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