C语言 索引在 for 循环中显示空



我想乘以矩阵。我通过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*));
}

输出:

"i"为空!

错误:

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

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

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

仅对指针值使用NULL,而不对数字使用。

相关内容

  • 没有找到相关文章

最新更新