2017-10-08 6 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は、数値ではなくポインタ値にのみ使用してください。

関連する問題