繁体   English   中英

为什么程序只在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;
}

程序运行,但我没有结果。 现在当我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM