2017-10-08 67 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,而不是数字。