繁体   English   中英

警告:“初始化会使指针从整数开始,而不会在c中进行强制转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM