2017-10-08 49 views
-1

我想乘上矩陣。我通過malloc()函數創建矩陣。指數(命名爲i變量)顯示NULL,而不是數量索引在循環內顯示NULL

int** matrix_a = (int**)malloc(lines * sizeof(int*)); 
for (int i = 0; i < lines; i++) { 
    if (i == NULL) 
     printf("'i' is NULL!"); 
    matrix_a[i] = (int*)malloc(trans * sizeof(int*)); 
} 

輸出:

'i' is NULL!

錯誤:

Unhandled exception at 0x00007FF6003C35BB in MPI_C.exe: 0xC0000005: Access violation writing location 0xFFFFFFFFABA57A00.

+2

你想用'i == NULL'完成什麼? – pzaenger

+0

乾淨的語言將不勝感激。 –

+1

不要施加'malloc()'的結果。 – melpomene

回答

1

這是沒有意義的比較非 - 指向NULL。宏NULL擴展爲整數常量0,可能投到(void *)

在前一種情況下,您的代碼只檢查if (i == 0),這在循環的第一次迭代中是正確的。在後一種情況下,你正在做if (i == ((void *)0)),你的編譯器應該抱怨,因爲它是一個類型錯誤。

僅針對指針值使用NULL,而不是數字。