C语言指针递增


C语言的指针递增与解引用*


原网址:http://www.cclove.me/6feb700c6cd73685a8b3fb930e289d6b.html


看到某群里面有人说:
夏式 2011-8-13 15:24:47char *strcat(char *s1,const char *s2){ char *p; p = s1; while(*p++); while(*p++ = *s2++); return s1;}夏式 2011-8-13 15:24:52何其蛋疼的指针。。。
然后我就乐了,想到可爱的夏式那蛋疼的样子就想笑。于是我想起了以前的日志,重新发一遍好了。o(∩∩)o...哈哈~~ &ch 得到ch的地址 cp 储存着ch的地址,即ch的指针 &cp 得到cp指针的地址,即指针的指针 *cp 对cp解引用,得到cp指向的内存位置的值 *cp+1 对cp解引用,得到cp指向的内存位置的值,把值加一 *(cp+1) 把cp+1,指向下一个内存地址,然后对它解引用 ++cp 把cp+1然后返回指针的拷贝 cp++ 返回指针的拷贝然后把cp+1 *++cp 先cp+1,指向下一个内存地址,然后对它解引用 *cp++ ++操作符产生cp的一份拷贝,然后++操作符增加cp的值,然后在cp的拷贝上对它解引用(++操作符的优先级高于*操作符) ++*cp 由于这两个操作符的结合性都是从右向左,所以首先对它解引用,然后cp所指的位置的值+1 (*cp)++ 首先解引用,然后增值原先值 ++*++cp 从右到左,先增加指针的值,再解引用,再增加指针指向的值。 ++*cp++ 这个表达式和前一个表达式的区别在于这次第一个++操作符是后缀形式而不是前缀形式。由于它的优先级比较高,所以先执行它。间接访问操作所访问的是cp所指向的位置而不是cp所指向位置后面的那个值。 *p++先解引用再递增指针指向下一个内存地址。
main(){ char a[] = "abcdefghijk"; char *b = a; while(*b != 0) printf("%c", *b++);}
打印abcdefghijk。直接 *a++则出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值