c - 为什么程序只给出在 main 中定义的输出(以及我如何更改它)?



我试图运行这个

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分配给任何内容。

你的直接问题是你没有调用函数array,你declaremain体内.声明本身不执行代码。

函数声明告知编译器有关函数的名称、返回类型和参数的信息。

函数定义提供函数的实际主体。

定义函数

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;
}

main内部的int array(void);只是一个声明。 您告诉编译器您在其他地方有一个称为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;
}

正如对该问题的评论中所述,而不是这个...

int main(void)
{
int array(void);
return 0;
}

你应该写

int main(void)
{
array(void);
return 0;
}

这是因为在说int something();时,您正在声明一个名为something的函数的原型,该函数不接收任何参数并返回一个 int。相反,您只需键入something();即可调用该函数。

相关内容

  • 没有找到相关文章

最新更新