看!
双指针实际上是这样存储的
假设
int p,*q,**r;
p=50;
假设p
的地址为400
(&p
是400
),如果我们写q=p
并打印q
,我们将得到400
作为答案,因为q
指向p
的地址,而*p
将呈现50
作为输出,因为operator *
指的是“地址上的值”。
现在,假设q
的地址为500
(&q
输出500
),因此当我们这样做时:r=q
,r
包含值500
,并在前缀r
与*
即*r
时,输出应该是400
,因为r
呈现存储p
的地址的q
的值,它是一个指针变量。
因此,如果在C程序中运行以下代码
int main()
{
int p,*q,**r;
p=50;
q=p;
r=q;
printf("Value of p-->%d",p);
printf("\nValue of q-->%d",q);
printf("\nValue at address of q \"in the address displayed above\"-->%d",*p);
printf("\nValue of r \"which will be the address of q\"-->%d",r);
printf("\nValue of r \"which will be the adddress of p-->%d",*r);
printf("\nValue of r \"which will be the value of p\"-->%d",**r);
return 0;
}
输出
-------
p的值--> 50
q的值--> 400
在上面显示的地址中q的值--> 50
r的值 "将是q的地址"--> 500
r的值 "将是p的地址"--> 400
r的值 "将是p的值"--> 50
通过上面的例子,我试图解释双指针的用法。也许你已经知道了,但我还是想生动地阐述一下。
现在结合数组来使用上面的例子。
看看吧,数组已经是指针了,因为它们可以被引用为*(a+1)或a[1]。
因此,双指针可能意味着指针数组或字符串数组,具体取决于您的问题。双指针符号的使用取决于情况。
在您发布的问题中,_TCHAR**argv或简单地说char **argv是控制台输入的字符数组,它总是被接受为字符流。
在Java中,我们使用类似的东西,例如public static void main(String argv[])。这清楚地表明主方法接受的输入是字符数组(或字符串,以便更加通用)的数组。
希望您已经理解了区别。如果没有,请评论。我会给您解释的。
谢谢。