现在的位置: 首页 > 综合 > 正文

关于指针

2013年12月04日 ⁄ 综合 ⁄ 共 550字 ⁄ 字号 评论关闭

 #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!

抱歉!评论已关闭.