复杂的三级指针问题
来源:互联网 发布:手机英语口语交流软件 编辑:程序博客网 时间:2024/05/25 16:37
三级指针,真是难见,今天 在CSDN上看到了, 是别人发问的。问题如下:
#include "stdio.h"
char*c[]={"ENTER","NEW","POINT","FIRST"};
char **cp[]={c+3,c+2,c+1,c};
char ***cpp=cp;
main()
{
printf("%s",**++cpp);
printf("%s",*--*++cpp+3);
printf("%s",*cpp[-2]+3);
printf("%s\n",cpp[-1][-1]+1);
}
输出结果是POINTER STEW 希望高手给出解释,THANK YOU !
我的解释:
step 1
**++cpp
cpp->cp[0]->c+3 ==> cpp==++cpp->cp[1]->c+2->"POINT"==> *++cpp->"POINT" ==> **++cpp=="POINT"
step 2
*--*++cpp+3
from step1 -->conclusion: cpp->c+2
++cpp==cpp->c+1 ==> *++cpp==*(c+1)->c[1] ==> --(*++cpp)->c[0] ==>*(--(*++cpp))=="ENTER" ==> *(--(*++cpp))+3->"ER"
step 3
*cpp[-2]+3
the same from step 2,conclusion:cpp->c+1
cpp[-2]->cp[0] ==> *cpp[-2]->(c+3) =="FIRST" ==> *cpp[-2]+3==(c+3)+3->"ST"
step 4
cpp[-1][-1]+1
the same from step 2,conclusion:cpp->c+1
cpp[-1]->cp[1] (->c+2) ==>cpp[-1][-1]->c+1 (->"NEW") ==> (cpp[-1][-1]+1)->"EW"
conclusion:POINTER STEW
参考:http://sysuor.blog.163.com/blog/static/8620131200832051039568/
- 复杂的三级指针问题
- C指针的若干复杂问题
- 面试题:三级指针问题
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数
- 复杂的函数指针
- 指针 复杂的声明
- 复杂的指针
- 指针 复杂的声明
- 指针的复杂声明
- 复杂指针的声明
- 复杂指针的声明
- 指针 复杂的声明
- 复杂指针的声明
- 复杂指针的声明
- 复杂的函数指针解析
- 有关指针的复杂类型
- 函数指针的复杂声明
- 复杂指针的定义(含复杂函数指针)
- MySQL数据库优化总结
- [linux] PHP编译参数详解
- CSV逗号分隔值文件
- 探索Android中的Parcel机制
- css控制页面在ie和firefox下均居中显示
- 复杂的三级指针问题
- ASIHTTPRequest 详解, http 请求终结者
- poj 3748位操作
- 愚人的linux内核2440移植札记(超曲折版)
- PHP检测 ajax 请求
- linux系统调用之ftok()
- Socket编程中的EAGAIN
- struts2中文乱码问题的解决方法
- ubuntu11.10下安装nginx+php+mysql