找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2237|回复: 2
收起左侧

怎么理解C语言指针自加问题

[复制链接]
ID:521921 发表于 2019-6-14 17:16 | 显示全部楼层 |阅读模式
各位师兄:

有个C语言指针疑问请教下,教材代码:

*str++ = ' - ';//表示指针上面添加负号?怎么理解?
02.png
回复

使用道具 举报

ID:517466 发表于 2019-6-15 00:45 | 显示全部楼层
我的理解是,*str++='-',是先对str指向的单元放一个'-'字符,然后调整指针指向下一个单元。后面的转换中,buf是按照个位,十位,百位...的顺序放入字符的。所以后面的循环处理时,用i--调整处理顺序为从数据高位向各位的顺序,按照这个顺序依次放入字符串指针str所指向的单元,同时指针+1,指向下一个存储单元。
例如,对-123,在str指针指向的单元里,按照处理顺序,像放入'-',把100放进buf时,buf中装入的是{'3','2','1'},后面倒序把buf装入str指向的单元。依次变成:{'-'}  -->  {'-','1'}  --> {'-', '1', '2'}  --> {'-', '1', '2', '3'}。

*str++='-'; 是不是就等于*str='-'; str++;这样的处理?
回复

使用道具 举报

ID:388197 发表于 2019-6-15 01:19 | 显示全部楼层
这种写法是谭浩强的书的通病,写多一行好像要死似的.
第1个,str++ = '-';的意思是,   指针变量当前指向单元被赋值 字符负号后,指针变量往前移动一个单元.
这个语句等价于.
*str = '-';
str++;

第2个, *str++ = buf[i] + '0';  左边意义跟上面一样,右边buf[i]应该为 0-9的数字  一个数字加 '0'就是转成该数字的ASCII码.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表