2010-11-14 109 views
5

如何檢查數組中的元素是否爲C中的空元素?如何查看C中數組中的元素是否爲空?

if(array[i] == NULL) 

似乎沒有工作。

+2

什麼不行?這一行代碼不是很有幫助。什麼是'array',它在哪裏初始化? – casablanca 2010-11-14 17:59:32

+3

請定義你的意思是「不工作」 - 它不編譯?運行時行爲是否與預期不同? (也許你忘了將數組內容初始化爲NULL?) – cdhowie 2010-11-14 18:00:06

+0

我認爲這是cdhowie問題,因爲我習慣了java,所有東西都被初始化爲null。 C中元素的默認初始化是什麼? – Alex 2010-11-14 18:03:34

回答

13

你是什麼意思

當執行C程序時,未明確初始化的變量會得到不可預知的值。

你需要將所有陣列單元的設置爲NULL(或爲0,或任何值代表了你的程序邏輯emptyness),然後你就可以在你的方式檢查:

int *array[3] = { NULL, NULL, NULL }; // array of three "empty" pointers 

... 

for(i = 0; i < 3; ++ i) { 
    if(array[i] == NULL) { 
    // i-th cell is "empty" 
    } 
} 
+2

+1指出缺乏初始化錯誤 - 可能是這裏發生了什麼。 – 2010-11-14 18:03:00

+2

'int * array [3] = {NULL}'應該足以使所有數組元素無效。 – Uila 2014-05-27 00:03:22

+0

@Uila:在實踐中是的,但我認爲它可能不那麼明確和誤導,因爲它只能將數組初始化爲0.不能使用這種快捷方式將數組的所有元素初始化爲1,而且'NULL '可能與0不同。 – peoro 2014-05-27 12:21:29

1

問題回答:

你發佈的是正確的代碼。

闡述:

如果「似乎不工作」,也許問題不在於在你的代碼這個位置。如果您要發佈更完整的示例,包括代碼的預期行爲和實際行爲,我們可能會幫助您。

1

假設array確實是一個指針數組,所提供的單行代碼確實應該驗證索引i處的元素是否爲NULL。

不過請注意,如果陣列沒有正確初始化(即:提供一個初始值每個單元),數組最有可能包含垃圾和你的病情很可能最終會被錯誤的。