error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] tarshut=(int *)malloc(9*sizeof(int));
时间: 2024-04-12 13:31:29 浏览: 152
抱歉,我之前的回答中有一个错误。在C语言中,不需要进行强制类型转换来给指针赋值。`malloc` 函数返回的指针类型是 `void*`,可以直接赋值给任意类型的指针。因此,在您的代码中,不需要将 `malloc` 的返回值强制转换为 `int*` 类型。
以下是修正后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int *fun()
{
int *tarshut;
tarshut = malloc(9 * sizeof(int));
if (tarshut == NULL) {
printf("内存分配失败");
exit(1);
}
for (int i = 0; i < 9; i++) {
tarshut[i] = i;
}
return tarshut;
}
int main()
{
int *tarshut;
tarshut = fun();
for (int i = 0; i < 8; i++) {
if (tarshut[i] != tarshut[i+1]) {
printf("tarshut[%d] = %d\n", i, tarshut[i]);
return 0;
}
}
free(tarshut);
tarshut = NULL;
return 0;
}
```
现在,代码中的内存分配部分已经修正,不再会出现类型不兼容的警告。同时,请确保在使用完动态分配的内存后,使用 `free` 函数释放该内存,并将指针设置为 `NULL`。这样可以避免内存泄漏和悬挂指针。
阅读全文