[英]Why does the program only give an output if defined in main (and how can I change this)?
我试着跑这个
int array( void )
{
char text[12] = { 112, 114, 111, 103, 112, 0 };
int i;
for(i = 0; text[i]; i = i +1)
printf("%c", text[i]);
printf("\n");
return 0;
}
int main( void )
{
int array(void);
return 0;
}
程序运行,但我没有结果。 现在当我使用main函数定义程序时:
int main( void )
{
char text[12] = { 112, 114, 111, 112, 0 };
int i;
for(i = 0; text[i]; i = i +1)
printf("%c", text[i]);
printf("\n");
return 0;
}
我得到结果progr
(如所需)。 我已经搜索过,但我发现的唯一相关问题是将main
用作函数名称和输出错误。 也许我正在寻找错误的方式,但如果有人能够回答这个问题,我会很高兴。
由于函数返回int
,您也应该将其返回值赋给int
。 要么
您可以只使用其名称正常调用它,因为它始终返回0
常量。
int i = array(); // i = 0
// or
array();
它只是打印 ,其值始终为0
。
然后我建议将它变为void
因为你只需要通过名字来调用它。
#include <stdio.h>
void array()
{
char text[12] = { 112, 114, 111, 103, 112, 0 };
for(int i = 0; text[i]; i++)
printf("%c", text[i]);
printf("\n");
}
int main()
{
array();
return 0;
}
请注意 ,您不能将类型void
分配给任何内容。
正如对该问题的评论所述,而不是......
int main(void)
{
int array(void);
return 0;
}
你应该写
int main(void)
{
array(void);
return 0;
}
这是因为当说int something();
你正在声明一个名为something
的函数的原型,它不接受任何参数并返回一个int。 相反,您需要通过键入something();
来调用该函数something();
。
你的直接问题是你没有调用函数 array
,你在main
函数体内declare
它。 声明本身不执行代码。
函数声明告诉编译器函数的名称,返回类型和参数。
函数定义提供函数的实际主体。
定义一个函数
C编程语言中函数定义的一般形式如下
return_type function_name( parameter list ) {
body of the function
}
在您的情况下,您有两个函数定义:
// 1.
int array( void )
{
char text[12] = { 112, 114, 111, 103, 112, 0 };
int i;
for(i = 0; text[i]; i = i +1)
printf("%c", text[i]);
printf("\n");
return 0;
}
// 2.
int main(void)
{
//...
return 0;
}
功能声明
函数声明告诉编译器函数名称以及如何调用函数。 函数的实际主体可以单独定义。
int array(void); // function declaration, no parameters, returns int value
调用函数
要调用函数,只需要传递必需的参数和函数名称,如果函数返回一个值,那么您可以存储返回的值。
在你的情况下,这样称呼它:
array();
因为没有参数可以传递。
总结一下:
int array(void); // function declaration, no parameters, returns int value
int array(void) // definition of the function `array`
{
// function body
char text[12] = { 112, 114, 111, 103, 112, 0 };
// ...
return 0;
}
int main(void) // definition of the function `main`,
{
array(); // function call, calling function `array` with no parameters
return 0;
}
int array(void);
main
内部只是一个声明。 你告诉编译器你在其他地方有一个叫做array
的函数,它没有参数,也没有返回任何参数。 但是在任何情况下都不会在main上调用array
函数。 要调用它只需将声明更改为如下语句:
int main()
{
int array(void); // you tell compiler that you have a function array.
array(); // you are executing the code of array();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.