c++ 指针,char*[]c,char**cp[],char***cpp
来源:互联网 发布:解方程 计算机算法 编辑:程序博客网 时间:2024/06/08 13:15
输出:WORLD,LO,HI,EW
第一个printf:由于char***cpp,可以读成cpp为一个指向char**类型的指针,并且初始化为cp,而cp是一个指针数组,数组里面存储的类型为char**,也就是cpp指向cp[0],故*cpp=cp[0];因此++cpp使得cpp指向cp[1],故*++cpp=cp[1];而cp[1]是一个指向c[2]的指针,因此*cp[1] = c[2],故**++cpp=*cp[1]=c[2],故输出WORLD;
第二个printf:由优先级可得知,单目运算符高于算术运算符;而*和++是单目运算符,+是算术运算符,又cpp本身是指向的cp[1],故++cpp使得cpp指向cp[2],故*++cpp则为cp[2],而此时的cp[2]是一个指向c[1]的地址,故对指向c[1]的指针cp[2]进行--,故使得cp[2]指向的是c[0],故*--*++cpp+3=*--cp[2]+3=c[0]+3,而这里的c[0],其实存放的是指向HELLO字符串的指针故c[0]+3,使得该指针指向HELLO中的第二个L的位置,故输入LO;
第三个printf:由于cpp目前指向的是cp[2],而cpp[-2]是等于*(cpp-2),而在第二个printf时cpp指向cp[2],则*(cpp-2) = cp[0](注:这里cpp-2后,cpp本身的指针地址没有改变,因此在第四个printf中,cpp依旧是指向cp[2]),又cp[0]是一个指向c[3]的指针,对cp[0]进行*运算,使得*cp[0]=c[3],故**(cpp-2)=*cpp[-2]=c[3],同时c[3]是一个指向SAYHI的指针,故c[3]+3,使得指向H的位置,故输出HI;
第四个printf:在第三个printf并没有改变cpp的地址,故cpp依旧是指向cp[2],又cpp[-1][-1]+1=*(*(cpp-1)-1)+1,故cpp-1,则cpp指向cp[2],故*(cpp-1)=cp[1];此时的cp[1]是一个指针,指向c[2],故cp[1]-1是从指向c[2]的指针地址-1,故是指向c[1],则*(*(cpp-1)-1)=*(cp[1]-1)=c[1],故cpp[-1][-1]+1=*(*(cpp-1)-1)+1=c[1]+1,此时的c[1]同样是一个指针,故c[1]+1是指向NEW中的E的位置,故输出EW。
阅读全文
0 0
- c++ 指针,char*[]c,char**cp[],char***cpp
- <C>char/char*/char**数组
- [C/C++]指针解析,char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][
- C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])
- C Char* Char[] sizeof
- C++:char* 和 char[]
- c/c++ char*、char[]
- 转载关于char的c语言指针问题:char **s char *a [ ] char a [ ]
- C语言中 char * char [] char*[] char**以及指针的理解
- C/C++ Char* and Char[]
- 浅析char*和char c[]
- C++及C中的 string char指针及char数组
- C++及C中的 string char指针及char数组
- C++及C中的 string char指针及char数组
- C++及C中的 string char指针及char数组
- C++及C中的 string char指针及char数组
- C++及C中的 string char指针及char数组
- C++及C中的 string char指针及char数组
- 谷歌中文开发文档
- celery message priority
- anaconda使用总结
- openssl工具
- 百度的分词方法(原出处file:///C:/Documents and Settings/guofang_1/%E6%A1%8C%E9%9D%A2/%E7%99%BE%E5%BA%A6%E7)
- c++ 指针,char*[]c,char**cp[],char***cpp
- Spring Date类注入
- Java API 连接Hbase数据库以及这次项目实践所涉及的操作
- 每周荐书:渗透测试、K8s、架构(评论送书)
- 微信小程序开发—引用公共js里的方法
- redis必杀命令:HyperLogLog
- 程序员面试之葵花宝典
- qt 内省与反射的例子
- Kerberos认证