argv [1] +1和argv [2]有什么区别

时间:2013-11-18 04:41:58

标签: c++

我知道这个问题很基本,我也是新手,所以请帮助我解决这个问题:

我有这段代码:

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 ???

的文件

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

<强>首先, 为什么要使用argv [1] +1: - &GT; _wcsicmp需要POINTER,所以你需要传递:argv [1] + 1或argv [2]

<强>其次, argv [1] +1和argv [2]之间有什么区别(我上面已经使用过)。 : - &GT; 你看到wmain的第二个参数:wchar_t * argv []? - 这是ARRAY的指示器(同样指向POINTER)。

每个参数用空格分隔。 因此,argv [1]指针指向第二个参数,argv [2]指针指向第三个参数。 并且,argv [1] +1将指针中的地址增加1(意思是,该指针将指向第二个参数字符串中的第二个字符)

答案 2 :(得分: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]
相关问题