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

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

本文关键字:argv 什么 区别      更新时间:2023-10-16

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

我有这个代码:

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:--> _wcsicmp需要指针,所以你需要 pass:argv[1] + 1 或 argv[2]

第二argv[1]+1 和 argv[2] 有什么区别(我在上面用过)。-->你看到 wmain 的第二个参数:wchar_t *argv[] 吗?- 这是指向数组的指针(与指向指针的指针相同)。

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

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

argv[1] + 1 是指向argv[1]中第二个字符的指针,而argv[2]argv 中的第三个元素(指向字符的指针)。

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