指针的回忆
来源:互联网 发布:我国网络舆论积极作用 编辑:程序博客网 时间:2024/05/18 02:23
这道题很好,可以复习对指针和数组的理解。
char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; //指针数组,数组里存放的都是char型指针char **cp[] = { c+3, c+2, c+1, c }; char ***cpp = cp; //这里要注意,cp是存储着二级指针的数组的首地址,也是一个以三级指针, //cpp是一个存储着二级指针地址的三级指针,这里仅仅是将三级指针cp赋值于三级指针cpp, int main(void){ 1 printf("%s", **++cpp); 2 printf("%s", *--*++cpp+3); 3 printf("%s", *cpp[-2]+3); 4 printf("%s\n", cpp[-1][-1]+1); return 0;}
1. ++cpp; ~> cpp = cp+1; ~> *(cp+1)=c+2; ~> *(c+2)=c[2] 故第一个printf打印的是c[2]的值,POINT
2. 由于1.对cpp进行了操作,cpp=cp+1,则++cpp=cp+2; ~> *cpp=c+1; ~> --(c+1)=c ; ~>*c=ENTER, *c+3=c[0]+3=ER
3. cpp=cp+2, cpp[-2]=cp; ~> *cp=c+3=c[3]; ~> c[3]+3=ST
4. cpp=cp+2=cp[2], cpp[-1]=cp[1]=c+2; ~>(c+2)[-1]=c[1] ; ~> c[1]+1=EW;
其中用到了优先级的问题。
初等单目一二级, // 初等运算符和单目运算符分别是第1、2优先级
乘除求余加减移, // 这句里面的运算符全归为算术运算符,移表示移位
关系等于不等于, // 关系运算符(< <= > >=)
按位与来异或或, // 位运算符优先级顺序: & -> ^ -> |
逻辑与或条件弱, // 逻辑运算符优先级顺序: && -> ||,后面跟着优先级比较低(弱)的条件运算符
赋值逗号一点破。 // 赋值,逗号最低
0 0
- 指针的回忆
- 回忆智能指针
- 回忆,更多的只是回忆!
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- 很久没搞C了!看见了一道指针的题!回忆一下!
- 美丽的回忆
- Robbin的一段回忆
- 美好的同年回忆
- 一不小心翻出的回忆...
- 最后的回忆
- 芙蓉姐姐的心跳回忆
- 美好的回忆
- 70s的回忆
- 中学时代的回忆
- 高中的回忆
- 回忆的微积分
- 义教的回忆
- 回忆我的童年
- 基本知识
- 剑指offer 矩形覆盖
- 错误502 upstream sent too big header while reading response header from upstream
- 输出一个集合的幂集(所有子集)
- Android启动页解决方案
- 指针的回忆
- 机器学习——基于概率论的分类方法:朴素贝叶斯
- Android Studio离线打包DCloud Html 5+项目
- 算法(第4版本)1.1.30
- C#多线程和线程池
- 前端渲染和后端渲染,要说的都在这里?
- C基础练习4(2012电科复试C)
- 操作系统课程记录(2)————制作grub启动盘(1)
- 最近因为项目需要,所以配置了linux下面的eclipse平台配置opencv3.0的环境,参考了一些正真有用的网页,记录