简体   繁体   English

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

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

I know this question is basic, I also newbie, so plz help me clear this problem: 我知道这个问题是基本的,我也是新手,所以请帮助我解决这个问题:

I have this code: 我有以下代码:

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");
    }
}

It work OK, but if I replace to: 可以,但是如果我替换为:

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");
    }
}

It's break when run. 运行时坏了。

I don't know 我不知道

  • Why use argv[1]+1 为什么要使用argv [1] +1
  • What difference between argv[1]+1 and argv[2] (I've used above). argv [1] +1和argv [2]之间有什么区别(我在上面使用过)。

Anyone explain for me, and give me document about wchar_t ??? 有人为我解释,并给我有关wchar_t的文档吗?

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

First, Why use argv[1]+1: --> _wcsicmp require POINTER, so you need pass: argv[1] + 1 or argv[2] 首先, 为什么要使用argv [1] +1: -> _wcsicmp需要POINTER,因此您需要传递:argv [1] + 1或argv [2]

Second, What difference between argv[1]+1 and argv[2] (I've used above). 其次, argv [1] +1和argv [2]之间有什么区别(我上面已经使用过)。 : --> Do you see second argument of wmain: wchar_t *argv[] ? ->您是否看到wmain的第二个参数:wchar_t * argv []? - This is mean POINTER to ARRAY (same same POINTER to POINTER). -这是指POINTER到ARRAY(相同的POINTER到POINTER)。

Each argument separate by space. 每个参数都由空格分隔。 So, argv[1] is pointer point to second argument, argv[2] is pointer point to third argument. 因此,argv [1]是指向第二个参数的指针,argv [2]是指向第三个参数的指针。 And, argv[1]+1 increase address in pointer by 1 (mean, that pointer will point to second character in second argument string) 并且,argv [1] +1将指针中的地址增加1(表示该指针将指向第二个参数字符串中的第二个字符)

argv[1] + 1 is a pointer to the second character in argv[1] while argv[2] is the third element (pointer to character) in argv . 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