C语言 为什么这个函数会出错:指向从“void”赋值给“int”的整数转换的指针不兼容?

ddrv8njm  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(95)

请看一下代码,clang给了我错误“从'void *'赋值到'int'的整数转换指针不兼容“,为什么会发生这种情况?

{
#include <stdio.h>  //use printf
#include <stdlib.h> //use random
#include <time.h>   //use time
#define MaxData 100 // Define Max Data
#define MaxRow 10   // 0..9 in Decimal base
#define MaxCol 20   // 0..19

int Data[MaxData];
int Radix[MaxRow][MaxCol]; // Radix is temporary tank. The size is[ 0..MaxRow, 0..MaxCol ]
int N, N1;

void ClearStackPT() // Clear every block=0 and use Radix[0] for SP
{
    int i;
    for (i = 0; i <= MaxRow; i++)
        Radix[i][0] = NULL; // This position keep the SP
}
}

这是我的gcc版本enter image description here
请帮我解决这个问题,我真的不知道发生了什么事

5fjcxozz

5fjcxozz1#

dbush已经提到NULL不是int。NULL的值在C中定义为((void *)0)。所以,在这里使用整数0。
你有一个未定义的行为,因为在循环条件中访问数组越界:

i = 0; i <= MaxRow; i++
         ^^^

应该是<

相关问题