c语言,如果定义char * *P,那么*P和P分别代表什么意思呢?

如题所述

调试下面语句看结果
char c='a';
char *pc=&c;
char **ppc=&pc;
printf("%d,%d,%d,%d,%d\n",c,pc,ppc,*ppc,**ppc);
一个正常变量c有一个地址(依电脑不同结果不同,我的电脑上是1244996)和变量值'a',要取得其地址就要一个指针,加一颗星,即*pc=&c,而指针pc本身也是一个变量,有其地址和变量值,这里的变量值就是c的地址1244996,所以输出的第二项为1244996,如果要取得pc的地址,就要指向指针的指针,即**ppc=&pc,而ppc还是一个变量,他的值就是pc的地址了,我这里是1244992,固输出第三项为1244992,以此类推,想获得ppc的指针,就来个指向指向指针的指针的指针,再加一颗星。
至于*ppc,看ppc的由来,c <- pc <- ppc ,那么*ppc就是pc,**ppc就是c,也就是每加一个星就往来的方向降一级
所以这个程序(在我电脑上)的输出结果就是 97,1244996,1244992,1244996,97来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-18
举个例子:char * *P;char a[9]; 假如 **p=a[0]=10 (**p=*&a[0])
而*p就相当于&a[0] 则p就相当于指向了*p 的指针 (&*p=p,p=&&a[0])
我也是刚学到这里,希望对你有帮助~本回答被提问者采纳
第2个回答  2013-02-18
这是指向指针的指针,从概念可以明白,P依然是一个指针。这个指针特殊的地方是它所指向的还是一个指针,即*p是一个指针。再延伸一下可以知道,*p这个指针指向的是一个char型的数,即**p是一个char型的数字。
第3个回答  2013-02-18
char **p是二级指针,*p可以表示一个字符串的首字符地址,p表示字符串的地址
第4个回答  2013-02-18
**p为指向指针的指针,那么先给它赋个值,
char **p;
char *a;
p = &a;

则p里就是a的地址.*p则是a的值,**p是a指向的变量