c - 如果在 main 中定义,为什么程序只提供输出(我该如何更改它)?

标签 c function output program-entry-point

我试着运行这个

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 分配给任何东西。

关于c - 如果在 main 中定义,为什么程序只提供输出(我该如何更改它)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49372688/

相关文章:

c - 获取函数参数的地址是否合法?

Jquery 总和

c - 如何创建三维动态数组,其中维度之一在c编译时已知

c - 如何在 C 中多路复用缓冲 IO?

c - 如果该行位于 printf 之前或之后,阶乘=阶乘 *i 之间有什么区别?

perl - 为什么输出没有重定向到文件中?

maven - Maven 可以变得不那么冗长吗?

c - execl() 适用于我的一个代码,但不适用于另一代码

python - 使用 "if else"语句和命名常量在 Python 中创建函数

python - 为什么 ipywidget 按钮调用的 my 函数不返回输出?