您的位置:首页 > 其它

关于指针

2011-10-26 13:43 127 查看
#include <stdio.h>

int main()

{

char *c[]={"ENTER","NEW","POINT","FIRST"};

char **cp[]={c+3,c+2,c+1,c};//三级指针

char ***cpp=cp;//cpp就是cp

printf("%s\n",**++cpp);

printf("%s\n",*--*++cpp+3);

printf("%s\n",*cpp[-2]+3);

printf("%s\n",cpp[-1][-1]+1);

return 0;

}首先先看题目第一项**++cpp,首先先执行++cpp,这时,*cpp值是c+2。其次执行**cpp。

当执行*(--(*(++cpp)))时,先执行++cpp,这时*cpp的值是c+1。而后执行--操作,c+1-1=c(但CP仍然指向原来c+1的位置),而后取*操作,此时值为"ENTER"的首地址,而后其地址加3,最后就是ER!

而后cpp[-2]=*(cpp-2)=c+3,所以*cpp[-2]即为“FIRST”的首地址,再加3,最后就是ST!

cpp[-1][-1]=*(*(cpp-1)-1)=*(c+2-1)=*(c+1)="NEW"的首地址,而后加1,最后就是EW!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: