繁体   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