[英]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.