标题: 怎么理解C语言指针自加问题 [打印本页]

作者: WGL88    时间: 2019-6-14 17:16
标题: 怎么理解C语言指针自加问题
各位师兄:

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

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

02.png (46.42 KB, 下载次数: 34)

02.png

作者: suncat0504    时间: 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++;这样的处理?
作者: cjm82    时间: 2019-6-15 01:19
这种写法是谭浩强的书的通病,写多一行好像要死似的.
第1个,str++ = '-';的意思是,   指针变量当前指向单元被赋值 字符负号后,指针变量往前移动一个单元.
这个语句等价于.
*str = '-';
str++;

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






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1