#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;
}
错误: 冲突类型的功能。 警告: 赋值使得指针来自整数而没有强制转换[默认启用]
为什么我收到此错误?
答案 0 :(得分:7)
因为您在没有先声明的情况下呼叫func()
。这会导致编译器假定它将返回int
,但是然后将该整数存储在指针中,这当然是可疑的。
通过将func()
移至 main()
上方的进行修复,以便在调用之前看到定义,或在main()
之前引入原型:
int * func();
此外,不带参数的函数应该是C中的(void)
和please don't cast the return value of malloc()
in C。