[英]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");
}
}
运行时坏了。
我不知道
有人为我解释,并给我有关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.