簡體   English   中英

argv [1] +1和argv [2]有什么區別

[英]What difference between argv[1]+1 and argv[2]

我知道這個問題是基本的,我也是新手,所以請幫助我解決這個問題:

我有以下代碼:

int wmain(int argc, wchar_t *argv[])
{
    if (*argv[1] == L'-' && (!_wcsicmp(L"install", argv[1]+1)))
    {
        wprintf(L"You pressed: -install !");
    }
    else
    {
        wprintf(L"Unknown");
    }
}

可以,但是如果我替換為:

int wmain(int argc, wchar_t *argv[])
{
    if (*argv[1] == L'-' && (!_wcsicmp(L"install", argv[2])))
    {
        wprintf(L"You pressed: -install !");
    }
    else
    {
        wprintf(L"Unknown");
    }
}

運行時壞了。

我不知道

  • 為什么要使用argv [1] +1
  • argv [1] +1和argv [2]之間有什么區別(我在上面使用過)。

有人為我解釋,並給我有關wchar_t的文檔嗎?

argv [1] +1指向argv [1]字符串中的第二個字符,而argv [2]指向下一個字符串。

首先, 為什么要使用argv [1] +1: -> _wcsicmp需要POINTER,因此您需要傳遞:argv [1] + 1或argv [2]

其次, argv [1] +1和argv [2]之間有什么區別(我上面已經使用過)。 ->您是否看到wmain的第二個參數:wchar_t * argv []? -這是指POINTER到ARRAY(相同的POINTER到POINTER)。

每個參數都由空格分隔。 因此,argv [1]是指向第二個參數的指針,argv [2]是指向第三個參數的指針。 並且,argv [1] +1將指針中的地址增加1(表示該指針將指向第二個參數字符串中的第二個字符)

argv[1] + 1是一個指針,指向在第二個字符argv[1]argv[2]是在所述第三元件(指向字符) argv

argv[1] == *(argv + 1)
argv[2] == *(argv + 2)
argv[1] + 1 == *(argv + 1) + 1 != argv[2]

暫無
暫無

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

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