如果在 main 中定义,为什么程序只提供输出(我该如何更改它)?
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;
}
和程序 运行s 但我没有得到任何结果。现在当我使用 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 main(void)
{
int array(void);
return 0;
}
你应该改写
int main(void)
{
array(void);
return 0;
}
这是因为当说 int something();
时,您正在声明一个名为 something
的函数的原型,该函数不接受任何参数,并且 returns 是一个 int。相反,您只需键入 something();
.
即可调用该函数
由于函数 returns int
,您也应该将其 return 值分配给 int
。 或
你可以只用它的名字正常调用它,因为它总是 return 是一个 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
分配给任何东西。
你的直接问题是你没有调用函数 array
,你
declare
它在 main
的正文中。 声明本身不执行代码。
函数声明告诉编译器函数的名称、return类型和参数。
函数定义提供函数的实际主体。
定义函数
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
调用函数
要调用函数,只需将所需的参数与函数名称一起传递,如果函数 return 是一个值,则可以存储 returned值。
在你的例子中这样称呼它:
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
的函数,它不带任何参数,并且 returns 没有任何参数。但是在任何情况下都不会在 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;
}
我试过运行这个
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;
}
和程序 运行s 但我没有得到任何结果。现在当我使用 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 main(void)
{
int array(void);
return 0;
}
你应该改写
int main(void)
{
array(void);
return 0;
}
这是因为当说 int something();
时,您正在声明一个名为 something
的函数的原型,该函数不接受任何参数,并且 returns 是一个 int。相反,您只需键入 something();
.
由于函数 returns int
,您也应该将其 return 值分配给 int
。 或
你可以只用它的名字正常调用它,因为它总是 return 是一个 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
分配给任何东西。
你的直接问题是你没有调用函数 array
,你
declare
它在 main
的正文中。 声明本身不执行代码。
函数声明告诉编译器函数的名称、return类型和参数。
函数定义提供函数的实际主体。
定义函数
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
调用函数
要调用函数,只需将所需的参数与函数名称一起传递,如果函数 return 是一个值,则可以存储 returned值。
在你的例子中这样称呼它:
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
的函数,它不带任何参数,并且 returns 没有任何参数。但是在任何情况下都不会在 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;
}