LeetCode——关于二级指针和++/--与*的例题

5 篇文章 0 订阅
4 篇文章 0 订阅

(1) ++比*的优先级高,所以先++,cpp是二级指针,++cpp表示cp+2是cp指针向后移动两次,指向c+2,c+2表示"POINT",所以(1)输出的是POINT(两次解引用结果是C的值)

 

(2) 经过(1)后cpp指向cp的c+2,也就是cp+1的位置,经过++cpp就是cp+2的位置,(从这里开始cpp的位置就不变了)cpp指针解引用为cp的c+1,c+1就是指针 指向c中的"NEW",指针cp--就是指向"ENTER",cp解引用后就表示"ENTER",再+3,就是向后移动3个字符,输出结果是"ER"

 

(3) 经过(2)后,cpp目前指向cp 的c+1的位置,*cpp[-2]=**(cpp-2);(cpp指针不移动,只是取值)-2就表示cpp取得当前位置向前两个位置的地址,并第一次解引用结果是c+3,也就是cp指向的"FIRST",再解引用就是"FIRST"这个字符串本身,最后在+3,表示向后三个字符,输出"ST"

 

(4) cpp目前还是指向c+1的位置,cpp[-1][-1]=*(*(cpp-1)-1);先计算*(cpp-1)的值,是c+2的值表示cp指针指向c的 "POINT",然后再计算-1,解引用,表示"NEW"本身,最后再+1,表示向后移动一个字符,输出结果是"EW"

 

综上所述,最后的输出结果是"POINTERSTEW"

注意:cpp[ 1 ]=*(cpp+1);表示取值,cpp指针本身不移动

         *cpp+1表示cpp指针指向的位置向后移动一次,并且解引用得到指针指向的空间里存放的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值