c - 为什么这会导致段错误而那不会?

标签 c

<分区>

为什么会导致段错误,

int main(char *argv[]) 
{
    printf("%s\n", argv[0]);
    return 0;
}

为什么不是这个

int main(int argc, char *argv[]) {
    int i = 0;
    printf("\ncmdline args count=%d", argc);

    /* First argument is executable name only */
    printf("\nexe name=%s", argv[0]);

    for (i = 1; i < argc; i++) {
        printf("\narg%d=%s", i, argv[i]);
    }

    printf("\n");
    return 0;
}

我不明白有什么区别。然而,就 C 编程而言,我完全是菜鸟。

最佳答案

第一个程序的 main 原型(prototype)无效:int main(char *argv[])

这有未定义的行为,在您的情况下是崩溃。

第二个程序正确并按预期执行。

关于c - 为什么这会导致段错误而那不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61083656/

相关文章:

c - 逐行散列文件

c - 如何在不打开文件的情况下从文件路径获取内存地址

c - 变量作为结构中的数组大小

c - 如何将宏定义从 "make"命令行参数 (-D) 传递给 C 源代码?

c - 具有相同名称的类似函数的宏和枚举器

c - 编写 Linux shell 时管理标准输出/标准输入

c - 如何计算tcp服务器中的数字

c - http 请求未收到完整信息 - C

c - 我如何使用其他变量打印 ascii 代码?

c - 不必要的头文件会影响什么吗