<分区>
我对 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
标签 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/