[英]How to delete pointers that are passed as arguments in function calls C++
[英]How to check if arguments were passed in C++
我最近開始學習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
}
我發現之前也問過同樣的問題,對此我深表歉意,但是我發現這些頁面上的答案與這里發生的事情相矛盾。
那么,為什么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.