returning 'int' from a function with return type 'int *' makes pointer from integer without a cast
时间: 2024-03-10 16:48:53 浏览: 43
这个错误是因为你定义的函数返回类型是 `int *`,但是函数内部使用了 `return` 语句返回了一个 `int` 类型的值。这会导致编译器认为你把一个 `int` 类型的值赋给了一个指针类型的变量,因为在 C 语言中,指针变量和整型变量在内存中的存储方式不同。
要解决这个错误,你需要保证函数返回值的类型和函数声明中的返回类型一致,或者在函数内部将返回值强制转换为指针类型。例如:
```c
int *my_func() {
int *ptr = (int *)malloc(sizeof(int));
*ptr = 123;
return ptr;
}
```
这个函数返回一个指向整型变量的指针。如果你在函数内部使用了 `return 123;` 的语句,就会出现上述错误。
相关问题
returning ‘int’ from a function with return type ‘DT *’ {aka ‘struct Student *’} makes pointer from integer without a cast [-Wint-conversion]
这个问题是一个编译警告,意思是在一个返回值类型为‘struct Student *’(即‘DT *’)的函数中返回了一个整数类型的值,这样会导致指针类型错误。需要进行强制类型转换或者检查返回值类型是否正确。
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*` 类型,避免了警告信息的出现。