首页 > 解决方案 > 为什么这会导致分段错误而不会?

问题描述

为什么这会导致分段错误,

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 编程而言,我是一个完全的菜鸟。

标签: c

解决方案


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

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

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


推荐阅读