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
:原型无效int main(char *argv[])
。
这具有未定义的行为,在您的情况下是崩溃。
第二个程序是正确的并按预期执行。
推荐阅读
- java - Liquibase-向名称中包含指定后缀的所有表添加一列
- java - 在自定义数组列表中调用字符串数组
- java - Servlet 多次初始化
- python - 我收到一个错误“没有名为‘app.config’的模块;‘app’不是一个包”
- java - 当我从 Android Studio 中的选项卡式活动启动片段时,屏幕变黑
- google-drive-api - Google Drive API 显示错误的 storageQuota
- ssl - 为特定端口续订证书
- html - 如何防止表格中的单元格超出表格并具有固定宽度?
- office-js - 使用本机搜索框的 Outlook Web 插件
- typescript - bundle 'client' 在控制台的 typescript 中有 221 个警告