+ -
当前位置:首页 → 问答吧 → 请教指针数组的相关问题

请教指针数组的相关问题

时间:2011-12-15

来源:互联网

# include <iostream.h>
char *str[]={"gain","much","stronger","point"};
char **p[]={str+2,str,str+3,str+1};
char ***pp=p;
void main()
{
 cout<<*pp[2]<<endl;
cout<<(**pp+6)<<endl;
cout<<(*++*++pp+2)<<endl;
cout<<pp[0][-1]+1<<endl;
}

结果:
point
er
ch
ain

问题:
1.pp[2]不是指向p[1]吗,前面用了取内容*符号,不就是p[1]吗,p[1]指向str[0],str[0]指向的才是pointer,cout<<str[0]能输出point,cout<<p[1],怎么能输出point呢?
2.第二个cout我理解是这样的,pp指向p[0],所以*pp就是p[0],然后再取内容,**pp就是str[0],再加6,就是指向stronger的e的位置,所以输出是er
3.++pp指向p[1],而后取内容,就是p[1],再++,就是p[2],取内容,p[2]指向str[3],所以取出来str[3],再加2,应该是指向pointer的i位置,为什么结果是ch呢?
4.最后一个一点都不明白

作者: longlong2235   发布时间: 2011-12-15

C/C++ code

4.最后一个一点都不明白


cout<<(*++*++pp+2)<<endl;//pp 自加1次。*pp自加一次后指向much。所以pp[0][-1]指向gain
cout<<pp[0][-1]+1<<endl;

作者: chenph_210   发布时间: 2011-12-15

引用 1 楼 chenph_210 的回复:
C/C++ code

4.最后一个一点都不明白


cout<<(*++*++pp+2)<<endl;//pp 自加1次。*pp自加一次后指向much。所以pp[0][-1]指向gain
cout<<pp[0][-1]+1<<endl;

不对吧,pp指向的东西都打乱了啊
char **p[]={str+2,str,str+3,str+1};

作者: longlong2235   发布时间: 2011-12-15

热门下载

更多