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 编译器在没有看到函数原型(prototype)的情况下发现一个函数调用时,它假定一个返回 int 的函数。
您应该使用“函数原型(prototype)”告诉编译器正确的函数签名:
int* MakeData(int DataCount);
这应该放在一个 .h 文件中,该文件将包含在调用或定义该函数的所有编译单元中。
如果您有一个仅在当前编译单元中可见的静态函数,您可以将原型(prototype)(包括 static
)放在该文件中所有函数之前。
此外,你不应该从 malloc
返回.它返回 void*
.在 C 语言中,这可以转换为任何其他指针类型。当您 #include <stdlib.h>
时,您会得到正确的原型(prototype).
关于c - 警告 :"initialization makes pointer from integer without a cast in c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22963595/