如何检查参数是否在C++中传递

Lin*_*oob -1 c++ program-entry-point arguments g++ input

我最近开始学习C++,我有点困惑argvargc.我试图通过检查大小来确定参数是否传递给程序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 ++进行编译.

Nat*_*ica 7

sizeof(argc)将永远是相同的价值. sizeof(variable_name)给出变量在内存中占用的大小.如果您想知道传递了多少参数,则需要评估变量包含的内容.例如

std::cout << argc - 1;
Run Code Online (Sandbox Code Playgroud)

它会显示参数的传递方式.这- 1是必需的,因为第一个参数是程序的名称,所以我们不希望在参数计数中计算.