c++ - 为什么我收到段错误 : 11 in this code

标签 c++

<分区>

我对 C++ 代码有疑问。我想将参数传递给我的代码,但有时它会是空的。我的代码非常简单。

#include <iostream>

int main(int argc, char **argv) {

  std::cout << argv[0] << std::endl;
  std::cout << argv[1] << std::endl;

}

我想要的是在没有提供的情况下显示空参数。我得到的是

./main
Segmentation fault: 11

最佳答案

在读取它们之前,您需要确保 argv 中确实存在两个参数。 读取一个未初始化的变量是 undefined behaviour在 C++ 中。

#include <iostream>

int main(int argc, char **argv) {
    if (argc >= 2) {
        std::cout << argv[0] << std::endl;
        std::cout << argv[1] << std::endl;
    }
}

上面的代码没问题,因为 argc 会告诉您 argv 中元素的数量,而上面的代码只会在实际上有两个或更多元素要读取时才读取它们阅读。

关于c++ - 为什么我收到段错误 : 11 in this code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307440/

相关文章:

c++ - 为什么编译器认为传递的是 std::string& 而不是 std:string

c++ - 原始 RGB 值到 JPEG

c++ - 如何在使用功能区的 MFC 应用程序中将 F10 用作快捷方式

c++ - 对 android_main 的 undefined reference (Android NDK - native_app_glue)

c++ - 多线程等时间单线程快速排序

c++ - 无法使用 Q_OBJECT 构建 Qt 示例(我可以避免 Qmake 吗?)

c++ - 用 C/C++ 编写日志文件

c++ - 使用opencv和cpp的应用程序的Yocto配方

c++ - 为什么当 '\n' 是第一个字符时 istream::get 设置 cin.fail?

C++ 表达式模板生命周期