c++main函数传参问题


#include <iostream>

int main(int argc, char const* argv[])
{
const std::string s1 = argv[1], s2 = argv[2];

std::cout << s1 + s2 << std::endl;

return 0;
}

0x00007FFE9EC07A41 (ucrtbased.dll)处(位于 MainFunction.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突。

为什么会报错呢,打印argv[0]是可以正常的,但是argv[1]之后就是错误了

你咋调用的呢?你在cmd窗口中是怎么调用这个exe的啊?参数怎么写的?argv[0]是文件名,肯定没问题。argv[1]就有问题,可能你根本就没给参数啊。带参main在cmd窗口用命令行调用

参考GPT和自己的思路:

这是由于您在运行程序时没有正确地传递命令行参数引起的。由于您的代码假定您已经传递了两个参数(即argv[1]和argv[2]),但实际上没有传递参数,所以尝试使用未初始化的指针进行字符串操作将导致未定义的行为。

您应该确保在运行程序时正确地传递命令行参数,否则就需要在程序中进行参数检查和错误处理,以避免类似的异常。