熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2019-6-14 17:16
正文摘要:各位師兄: 有個(gè)C語(yǔ)言指針疑問(wèn)請(qǐng)教下,教材代碼: *str++ = ' - ';//表示指針上面添加負(fù)號(hào)?怎么理解? |
|
這種寫(xiě)法是譚浩強(qiáng)的書(shū)的通病,寫(xiě)多一行好像要死似的. 第1個(gè),str++ = '-';的意思是, 指針變量當(dāng)前指向單元被賦值 字符負(fù)號(hào)后,指針變量往前移動(dòng)一個(gè)單元. 這個(gè)語(yǔ)句等價(jià)于. *str = '-'; str++; 第2個(gè), *str++ = buf[i] + '0'; 左邊意義跟上面一樣,右邊buf[i]應(yīng)該為 0-9的數(shù)字 一個(gè)數(shù)字加 '0'就是轉(zhuǎn)成該數(shù)字的ASCII碼. |
|
我的理解是,*str++='-',是先對(duì)str指向的單元放一個(gè)'-'字符,然后調(diào)整指針指向下一個(gè)單元。后面的轉(zhuǎn)換中,buf是按照個(gè)位,十位,百位...的順序放入字符的。所以后面的循環(huán)處理時(shí),用i--調(diào)整處理順序?yàn)閺臄?shù)據(jù)高位向各位的順序,按照這個(gè)順序依次放入字符串指針str所指向的單元,同時(shí)指針+1,指向下一個(gè)存儲(chǔ)單元。 例如,對(duì)-123,在str指針指向的單元里,按照處理順序,像放入'-',把100放進(jìn)buf時(shí),buf中裝入的是{'3','2','1'},后面倒序把buf裝入str指向的單元。依次變成:{'-'} --> {'-','1'} --> {'-', '1', '2'} --> {'-', '1', '2', '3'}。 *str++='-'; 是不是就等于*str='-'; str++;這樣的處理? |
Powered by 單片機(jī)教程網(wǎng)