警告:“初始化使得指针来自整数而没有c中的强制转换

时间:2014-04-09 13:10:24

标签: c compiler-errors

    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;
 }

我不知道为什么这不起作用。

我必须做什么?

1 个答案:

答案 0 :(得分:5)

当C编译器在没有看到函数原型的情况下找到函数调用时,它会假定一个返回int的函数。

您应该使用&#34;函数原型&#34;:

告诉编译器正确的函数签名
int* MakeData(int DataCount);

这应放在.h文件中,该文件将包含在调用或定义函数的所有编译单元中。

如果你有一个只在当前编译单元中可见的静态函数,你可以将原型(包括static)放在该文件中的所有函数之前。

此外,你永远不应该从malloc投出回报。它返回void*。在语言C中,这可以转换为任何其他指针类型。在#include <stdlib.h>时,您可以获得正确的原型。