簡體   English   中英

如何檢查參數是否在C ++中傳遞

[英]How to check if arguments were passed in C++

我最近開始學習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
}

我發現之前也問過同樣的問題,對此我深表歉意,但是我發現這些頁面上的答案與這里發生的事情相矛盾。

那么,為什么argc總是4 ,還有其他方法可以檢查參數是否傳遞給main()

如果相關,我正在使用g ++進行編譯。

sizeof(argc)將始終是相同的值。 sizeof(variable_name)給出變量在內存中sizeof(variable_name)的大小。 如果您想知道傳遞了多少參數,則需要評估變量包含的內容。 例如

std::cout << argc - 1;

將顯示如何傳遞參數。 - 1是必需的,因為第一個參數是程序的名稱,因此我們不想在參數計數中將其計算在內。

我正在嘗試通過檢查argc的大小來確定是否將參數傳遞給程序

argc 參數的數量。 argc的大小是int對象的大小。

那么,為什么argc總是4

因為int對象的大小在您的系統上始終為4個字節。

還有其他方法可以檢查是否將參數傳遞給main()嗎?

您可以檢查而不是argc的大小:

std::cout << argc;

請注意,該程序(通常)至少有一個參數:用於執行該程序的命令。

sizeof編譯時為您提供封閉類型的大小。

所以sizeof(argc)sizeof(int) ,而sizeof(argc)sizeof(char**) 希望您對此完全獨立於所通過的論點感到贊賞!

只需依靠C ++給您的東西: argc是傳遞的參數數量,包括程序名稱。 並且argv的元素數量與argc相同,但另外一個元素設置為nullptr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM