Lin*_*oob -1 c++ program-entry-point arguments g++ input
我最近开始学习C++,我有点困惑argv和argc.我试图通过检查大小来确定参数是否传递给程序argc,但不管有多少参数(包括没有)我传递给程序,它的大小总是如此4.
简单的例子:
int main(int argc, char** argv)
{
std::cout << sizeof(argc); //outputs 4 with 0 or any num of arguments
std::cout << sizeof(argv); //outputs 8 with 0 or any num of arguments
}
Run Code Online (Sandbox Code Playgroud)
我之前发现了同样的问题,我为重复它而道歉,但我发现的那些页面上的答案与这里发生的事情相矛盾.
那么,为什么argc总是4有没有其他方法来检查参数是否传递给main()?
如果它是相关的我正在使用g ++进行编译.
sizeof(argc)将永远是相同的价值. sizeof(variable_name)给出变量在内存中占用的大小.如果您想知道传递了多少参数,则需要评估变量包含的内容.例如
std::cout << argc - 1;
Run Code Online (Sandbox Code Playgroud)
它会显示参数的传递方式.这- 1是必需的,因为第一个参数是程序的名称,所以我们不希望在参数计数中计算.