来自不兼容指针类型的警告分配
Warning assignment from incompatible pointer type
所以我在弄乱动态分配以更好地理解它,我在我的代码中遇到了两次“来自不兼容指针类型的警告分配”警告,我不知道为什么。
基本上我想做的是动态分配动态分配的二维数组的队列。
第一次警告:
int * int_alloc_2d(unsigned int rows, unsigned int cols){
int **array;
int i;
array = (int **)malloc(sizeof(int*)*rows);
for(i=0;i<rows;i++)
array[i]=(int*)malloc(sizeof(int)*cols);
return array;
}
第一个警告出现在 return array;
行。这个函数是为了动态分配一个二维数组
第二次警告:
int main(int argc, char **argv){
QUEUE *queue;
queue = (QUEUE *)malloc(sizeof(QUEUE));
int **a;
a = int_alloc_2d(2,2);
return 0;
}
第二个警告出现在 a = int_alloc_2d(2,2);
行。在这里,我只是为队列分配内存(仅 1 个块)并在 "a" 变量中分配一个 2x2 二维数组。
我做错了什么?
您收到警告是因为该函数被声明为 return int*
(一个星号指针),但您 return 指向指针 int**
,两个星号指针。
您可以通过将函数 return 类型声明为 int**
:
来解决此问题
int ** int_alloc_2d(unsigned int rows, unsigned int cols){
int **array;
int i;
array = malloc(sizeof(int*)*rows);
for(i=0;i<rows;i++)
array[i]=malloc(sizeof(int)*cols);
return array;
}
所以我在弄乱动态分配以更好地理解它,我在我的代码中遇到了两次“来自不兼容指针类型的警告分配”警告,我不知道为什么。
基本上我想做的是动态分配动态分配的二维数组的队列。
第一次警告:
int * int_alloc_2d(unsigned int rows, unsigned int cols){
int **array;
int i;
array = (int **)malloc(sizeof(int*)*rows);
for(i=0;i<rows;i++)
array[i]=(int*)malloc(sizeof(int)*cols);
return array;
}
第一个警告出现在 return array;
行。这个函数是为了动态分配一个二维数组
第二次警告:
int main(int argc, char **argv){
QUEUE *queue;
queue = (QUEUE *)malloc(sizeof(QUEUE));
int **a;
a = int_alloc_2d(2,2);
return 0;
}
第二个警告出现在 a = int_alloc_2d(2,2);
行。在这里,我只是为队列分配内存(仅 1 个块)并在 "a" 变量中分配一个 2x2 二维数组。
我做错了什么?
您收到警告是因为该函数被声明为 return int*
(一个星号指针),但您 return 指向指针 int**
,两个星号指针。
您可以通过将函数 return 类型声明为 int**
:
int ** int_alloc_2d(unsigned int rows, unsigned int cols){
int **array;
int i;
array = malloc(sizeof(int*)*rows);
for(i=0;i<rows;i++)
array[i]=malloc(sizeof(int)*cols);
return array;
}