[英]warning:" initialization makes pointer from integer without a cast in c
for( k = 0; k < CycleCount;k++)
{
//make Org data
int* Data = MakeData(DataCount[i]);
......
功能看起来像这样。 我认为这是对的。 所以...
int* MakeData(int DataCount)
{
//
int* Data=(int*)malloc(DataCount*sizeof(int));
int i;
for( i=0; i<DataCount; i++)
{
//
Data[i] = rand()%DataCount +1;
}
return Data;
}
我不知道为什么这行不通。
我该怎么办???
当C编译器在没有看到函数原型的情况下找到函数调用时,它将假定该函数返回一个int。
您应该使用“函数原型”告诉编译器正确的函数签名:
int* MakeData(int DataCount);
应该将其放置在.h文件中,该文件将包含在所有调用或定义该函数的编译单元中。
如果您具有静态函数(仅在当前编译单元中可见),则可以将原型(包括static
)放在该文件中的所有函数之前。
此外,您永远不要转换malloc
的返回值。 它返回一个void*
。 可以使用语言C将其转换为任何其他指针类型。 #include <stdlib.h>
时,您将获得正确的原型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.