C 调用函数有问题吗?
如果我有这些功能:C 调用函数有问题吗?,c,C,如果我有这些功能: void main(void) { char *menu[] = {"data", "coming", "here"}; prints(**************); // here printf("\n"); } void prints(char **menu) { int a; while(*menu) { printf("%s", **menu); menu ++;
void main(void)
{
char *menu[] = {"data", "coming", "here"};
prints(**************); // here
printf("\n");
}
void prints(char **menu)
{
int a;
while(*menu)
{
printf("%s", **menu);
menu ++;
}
a = 0;
}
如何调用prints函数???在C中,您必须在另一个使用函数之前声明您的函数。所以
void prints(char **menu)
{
int a;
while(*menu)
{
printf("%s", **menu);
menu ++;
}
a = 0;
}
void main(void)
{
char *menu[] = {"data", "coming", "here"};
prints(**************); // here
printf("\n");
}
或者您可以向前声明函数:
void prints(char **menu);
void main(void)
{
char *menu[] = {"data", "coming", "here"};
prints(**************); // here
printf("\n");
}
void prints(char **menu)
{
int a;
while(*menu)
{
printf("%s", **menu);
menu ++;
}
a = 0;
}
在C语言中,必须先声明函数,然后再声明另一个使用它的函数。所以
void prints(char **menu)
{
int a;
while(*menu)
{
printf("%s", **menu);
menu ++;
}
a = 0;
}
void main(void)
{
char *menu[] = {"data", "coming", "here"};
prints(**************); // here
printf("\n");
}
或者您可以向前声明函数:
void prints(char **menu);
void main(void)
{
char *menu[] = {"data", "coming", "here"};
prints(**************); // here
printf("\n");
}
void prints(char **menu)
{
int a;
while(*menu)
{
printf("%s", **menu);
menu ++;
}
a = 0;
}
您可以将
prints
函数移到main
上方,也可以将prints
的原型移到main上方,如下所示:
void prints(char **menu);
然后,您可以像调用任何其他函数一样,从
main
调用prints
。您可以将prints
函数移到main
上方,也可以将prints
的原型放在main上方,如下所示:
void prints(char **menu);
然后,您可以像调用任何其他函数一样,从
main
调用prints
。这是一个解决了几个问题的版本:
#include <stdio.h>
// declare function before using it
void prints(char **menu)
{
// make sure parameter is valid
if (menu != NULL)
{
while(*menu)
{
// spaces so they don't run together
// pass *menu not **menu to printf
printf("%s ", *menu);
menu ++;
}
}
}
// proper return type for main()
int main(void)
{
// array terminator added
char *menu[] = {"data", "coming", "here", NULL};
prints(menu); // here
printf("\n");
// return with no error
return 0;
}
#包括
//在使用函数之前声明它
无效打印(字符**菜单)
{
//确保参数有效
如果(菜单!=NULL)
{
while(*菜单)
{
//空间,这样它们就不会一起运行
//将*菜单而不是**菜单传递到printf
printf(“%s”,*菜单);
菜单++;
}
}
}
//main()的正确返回类型
内部主(空)
{
//添加了数组终止符
char*菜单[]={“数据”,“即将到来”,“此处”,NULL};
打印(菜单);//这里
printf(“\n”);
//无误返回
返回0;
}
这是一个解决了几个问题的版本:
#include <stdio.h>
// declare function before using it
void prints(char **menu)
{
// make sure parameter is valid
if (menu != NULL)
{
while(*menu)
{
// spaces so they don't run together
// pass *menu not **menu to printf
printf("%s ", *menu);
menu ++;
}
}
}
// proper return type for main()
int main(void)
{
// array terminator added
char *menu[] = {"data", "coming", "here", NULL};
prints(menu); // here
printf("\n");
// return with no error
return 0;
}
#包括
//在使用函数之前声明它
无效打印(字符**菜单)
{
//确保参数有效
如果(菜单!=NULL)
{
while(*菜单)
{
//空间,这样它们就不会一起运行
//将*菜单而不是**菜单传递到printf
printf(“%s”,*菜单);
菜单++;
}
}
}
//main()的正确返回类型
内部主(空)
{
//添加了数组终止符
char*菜单[]={“数据”,“即将到来”,“此处”,NULL};
打印(菜单);//这里
printf(“\n”);
//无误返回
返回0;
}
打印(菜单)
,但是您忘了在菜单
数组的末尾添加一个空元素,因为打印
需要知道何时中断循环。另外,它应该是int main()
,而不是void main(void)
——如果您的C编译器没有抱怨后者,请将它扔掉,并找到一个更好的(例如gcc).我将开始在模糊C竞赛中使用void main
——它会自动使人们对所有其他问题视而不见。。。我的意思是如何从main调用它,我的意思是如何调用它,使菜单数组获得双指针,所以我必须在这里打印(*****************”);//这里的打印(菜单)
,但是您忘记在菜单
数组的末尾添加一个NULL元素,因为打印
需要知道何时中断循环。另外,它应该是int main()
,而不是void main(void)
——如果您的C编译器没有抱怨后者,请将它扔掉,并找到一个更好的(例如gcc).我将开始在模糊C竞赛中使用void main
——它会自动使人们对所有其他问题视而不见。。。我的意思是如何从main调用它,我的意思是如何调用它,使菜单数组获得双指针,所以我必须在这里打印(*****************”);//你的意思是翻转那些函数吗?哈哈,是的,我忘了添加一部分关于前向声明。在SO.Tnx上进行这样的竞赛,我是说如何从main调用它,我是说如何调用它,使菜单数组获得双指针,所以我必须在这里打印(****************);//那么,考虑到代码甚至不会编译,也许你应该发布一些有效的代码?还有其他的问题,看看评论。你是不是想把那些函数翻过来?哈哈,是的,我忘了添加一个关于转发声明的部分。在SO.Tnx上进行这样的竞赛,我是说如何从main调用它,我是说如何调用它,使菜单数组获得双指针,所以我必须在这里打印(****************);//那么,考虑到代码甚至不会编译,也许你应该发布一些有效的代码?还有其他问题,请看评论。tnx真的tnx的解释:)tnx真的tnx的解释:)