代码之家  ›  专栏  ›  技术社区  ›  citronas

这个函数的原型看起来应该如何可编译?

  •  0
  • citronas  · 技术社区  · 14 年前

    我有这个代码:

    void PrintMainParameters(int n, char* array[])
    {
      int i = 0;
      for(i = 0; i < n; i++)
      {
       printf("%s \n", array[i]);
      }
    }
    
    int main(int argc, char* argv[] )
    {
      PrintMainParameters(argc, argv);
    }
    

    工作良好。现在,我想将printmainparameters作为原型编写,以便稍后在源文件中声明函数。

    我试过这个,但它说类型不匹配,第二个参数是不兼容的指针类型。我理解编译器错误,但我不知道它为什么会发生。

    void PrintMainParameters(int, char*);
    
    
    int main(int argc, char* argv[] )
    {
     PrintMainParameters(argc, argv);
    }
    
    void PrintMainParameters(int n, char* array[])
    {
      int i = 0;
      for(i = 0; i < n; i++)
      {
       printf("%s \n", array[i]);
      }
    }
    

    原型必须是什么样子的?为什么我的代码不起作用?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Jerry Coffin    14 年前

    您可以使用:

    void PrintMainParameters(int, char**);
    

    或:

    void PrintMainParameters(int, char *[]);
    

    或者,如果愿意,可以将一个虚拟参数插入原型中,例如:

    void PrintMainParameters(int argc, char *argv[]);
    
        2
  •  6
  •   Thomas    14 年前

    函数接受一个字符指针数组。您的原型声明它采用单个char指针。正确的原型如下:

    void PrintMainParameters(int, char*[]);