我正在通過哈佛的 cs50 課程從頭開始學習 C。我得到了一個以這種方式初始化的陣列:
int stuff[9][9];
現在我必須處理它。
我想檢查陣列的每個專案是否存在:如果不存在,則 make stuff[i][j] = 0,否則,stuff[i][j]
但我正在搜索但沒有找到如何檢查我正在操作的變數是否存在或有效或其他:沒有!!stuff[i][j],也沒有一些typeof stuff[i][j]或比較if (stuff[i][j] == 'undefined')或者NULL我可以使用的任何變體......
那么,我如何檢查宣告的變數是否尚未初始化?
更新
我已經對此進行了測驗:
int a[3];
for(int i = 0; i < 3; i )
{
a[i] = a[i] || 0;
}
for(int i = 0; i < 3; i )
{
printf("a[%i] -> %i\n", i, a[i]);
}
因此,如果a[i]不存在(即沒有為其分配值),它將收到 value 0。這是的輸出printf:
a[0] -> 1
a[1] -> 1
a[2] -> 0
這很好,因為這種方法沒有引發錯誤,但是......這些數字是多少?
uj5u.com熱心網友回復:
假設上述陣列是區域變數而不是全域變數,則陣列的值未初始化,實際上您無法檢查變數是否未初始化,因為簡單地嘗試讀取此類變數可能會觸發未定義的行為。
聽起來您希望所有陣列元素都以值 0 開頭。最簡單的方法是這樣初始化陣列:
int stuff[9][9] = {{ 0 }};
其中顯式將元素設定[0][0]為 0,并將所有其他元素隱式設定為 0。
或者,您可以創建一個回圈以將所有值設定為 0 以在執行“常規”處理之前開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478364.html
上一篇:將物件轉換為其類
下一篇:如何用jq變數做雙重間接?
