我有这段代码:
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]);
}
}
原型必须如何?为什么我的代码不起作用?
答案 0 :(得分:6)
你的函数需要一组char指针。您的原型声明它采用单个char指针。正确的原型看起来像这样:
void PrintMainParameters(int, char*[]);
答案 1 :(得分:4)
您可以使用:
void PrintMainParameters(int, char**);
或:
void PrintMainParameters(int, char *[]);
或者如果您愿意,可以在原型中插入一个虚拟参数,例如:
void PrintMainParameters(int argc, char *argv[]);