returning 'DataType' {aka 'int'} from a function with return type 'DataType *' {aka 'int *'} makes pointer from integer without a cast [-Wint-conversion]|
时间: 2023-05-21 07:05:50 浏览: 88
这个问题是由于函数返回的类型为“DataType*”(也就是指针类型),但是实际返回的是一个“int”类型数据,所以编译器提示了这个警告:将整数转换为指针类型可能会导致错误。需要在返回语句之前将数据转换成相应的指针类型,以免出现错误。至于具体需要将返回值转换成哪种指针类型,需要根据具体情况而定。
相关问题
returning 'int' from a function with return type 'int *' makes pointer from integer without a cast
这个错误是因为你定义的函数返回类型是 `int *`,但是函数内部使用了 `return` 语句返回了一个 `int` 类型的值。这会导致编译器认为你把一个 `int` 类型的值赋给了一个指针类型的变量,因为在 C 语言中,指针变量和整型变量在内存中的存储方式不同。
要解决这个错误,你需要保证函数返回值的类型和函数声明中的返回类型一致,或者在函数内部将返回值强制转换为指针类型。例如:
```c
int *my_func() {
int *ptr = (int *)malloc(sizeof(int));
*ptr = 123;
return ptr;
}
```
这个函数返回一个指向整型变量的指针。如果你在函数内部使用了 `return 123;` 的语句,就会出现上述错误。
warning: returning ‘int’ from a function with return type ‘vo id *’ makes pointer from integer without a cast [-Wint-conversion]
这个警告信息提示你在一个返回类型为 `void*` 的函数中返回了一个整数,而没有进行强制类型转换。这种情况可能会导致程序在运行时出现错误。
常见的原因是在函数中使用了 `malloc` 或 `calloc` 等动态内存分配函数,并且没有正确地将返回值转换成 `void*` 类型。
解决这个问题的方法是在返回值前进行强制类型转换,例如:
```c
void *my_func() {
int *p = malloc(sizeof(int));
*p = 42;
return (void*)p;
}
```
这里在返回值前使用了强制类型转换将 `int*` 转换成了 `void*` 类型,避免了警告信息的出现。