您的位置:首页 > 编程语言 > C语言/C++

*c[];**cp[]和*cpp题目详解

2016-09-12 19:17 197 查看
又是一道笔试题,看着就蛋疼,做着做着就懵逼了,虽然没做对,但试着解释下,下次不能在错了!

题目:
char *c[] = {"Hello","New","World","SAYHi"};
char **cp[] = {c+3,c+2,c+1,c};
char ***cpp = cp;
cout << **++cpp << endl;
cout << *--*++cpp + 3<< endl;
cout << *cpp[-2] + 3 << endl;
cout << cpp[-1][-1] + 1 << endl;

结果:

World

lo

Hi

ew

因为:

++cpp:(++cpp)就是&cp[1],就是&&c[2],所以第一行结果为Point,此时cpp已经变为&cp[1]

*--*++cpp+3:(++cpp)就是&cp[2],*++cpp就是c+1就是&c[1],--*++cpp就是&c[0],*--*++cpp就是c[0],*--*++cpp+3就是lo

*cpp[-2]+3:这时cpp变为&cp[2],cpp[-2]就是&cp[0],*cpp[-2]就是cp[0],就是c+3就是&c[3],*cpp[-2]+3就是Hi

cpp[-1][-1]+1:这时cpp还是&cp[2],cpp[-1][-1]就是&cp[1][-1]就是c[1],cpp[-1][-1]+1就是ew

自己画了张图,加深理解,略抽象了。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 面试