#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
int main()
{
int i, *ptr;
ptr = func();
for(i=0;i<20;i++)
{
printf("%d", ptr[i]);
}
return 0;
}
int * func()
{
int *pointer;
pointer = (int*)malloc(sizeof(int)*20);
int i;
for(i=0;i<20;i++)
{
pointer[i] = i+1;
}
return pointer;
}
Run Code Online (Sandbox Code Playgroud)
错误:func的冲突类型.警告:赋值使得指针来自整数而没有强制转换[默认情况下启用]
为什么我收到此错误?
因为你在func()没有先声明的情况下打电话.这会导致编译器假定它将返回int,但是然后将该整数存储在指针中,这当然是相当可疑的.
通过移动func()到上面进行 修复main(),因此在调用之前可以看到定义,或者在之前引入原型main():
int * func();
Run Code Online (Sandbox Code Playgroud)
此外,不带参数的函数应该(void)在C中,请不要malloc()在C中转换返回值.