经典指数          
原因
864
浏览数
0
收藏数
 

下面程序应该输出多少?
char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; 
char **cp[] = { c+3, c+2, c+1, c }; 
char ***cpp = cp; 

int main(void)
{ 
    printf("%s", **++cpp); 
    printf("%s", *--*++cpp+3); 
    printf("%s", *cpp[-2]+3); 
    printf("%s\n", cpp[-1][-1]+1); 
    return 0;
}

  • POINTERSTEW
  • FERSTEPOINW
  • NEWPOINTW
  • POINTFIREST

     举报   纠错  
 
切换
1 个答案
前面的解析已经不错了,不过结合图片可能会更清晰点吧: 首先看 C,CP,CPP 之间的存储关系 计算各个表达式结果的过程如下图 更多关于指针的内容可以参考我的 Github: https://github.com/xuelangZF/CS_Offer/blob/master/C%2B%2B/Pointer.md
 
切换
撰写答案
扫描后移动端查看本题