index在for循环中显示NULL

时间:2017-10-08 13:21:13

标签: c for-loop null malloc

我想要乘以矩阵。我通过malloc()函数创建矩阵。索引(名为i的变量)显示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*));
}

输出:

  

'我'是NULL!

错误:

  

MPI_C.exe中0x00007FF6003C35BB处的未处理异常:0xC0000005:访问冲突写入位置0xFFFFFFFFABA57A00。

1 个答案:

答案 0 :(得分:1)

将非指针与NULL进行比较是没有意义的。 NULL宏扩展为整数常量0,可能会转换为(void *)

在前一种情况下,您的代码只检查if (i == 0),这在循环的第一次迭代中是正确的。在后一种情况下,您正在执行if (i == ((void *)0)),您的编译器应该抱怨它,因为它是类型错误。

仅将NULL用于指针值,而不是数字。