#1
|
||||
|
||||
C語言的指標問題請教
題目是,輸入一句英文,然後用指標的方法去寫,將全句分別改成全大寫和全小寫。
寫法如下: 引用:
一是條件判斷的while(*p),我知道這表示如果*p為真,亦即*p不是0的話,該式就繼續下去。但字串陣列最後一個應是null,它的值就是0嗎?其他地方的值不會有0嗎? 二是第二個的p=str;/*reset p */,註解說是要reset p,為什麼要reset呢?我試過不reset p,直接用上面已經toupper(*p)之後直接 tolower(*p),結果確實就不印出小寫,而還是和上面一樣全部大寫。 可是根據我目前的想法,既然toupper() tolower()函式都是把字母變大寫或小寫,那麼假設這一句英文 Hello, World. 經過 toupper會變成 HELLO,WORLD.,然後我再直接把它 tolower(),應該也就變成 hello,world.,不是嗎? thanks |
#2
|
|||
|
|||
一、while(*p) 是判断字串是否到结束了,如果没有结束,就为真;若结束了,就为假。
二、如果不重置p=str的话,那么下面的while(*p)就是假的,根本进不了,也无法调用*p=tolower(*p)了。
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。 |
#3
|
||||
|
||||
引用:
就是說,第一個while(*p)之後p++一直跑到盡頭了,此時如果再來一個while(*p)就等於是承接了剛才已跑到頭的p++的結果,自然就不會再跑一次。所以要再重置一次p=str。是這樣吧? 十分感謝。 |
#4
|
|||
|
|||
C 語言的指標, 常讓初學者摸不著頭緒, 或似懂非懂
C 語言本身也是較低階的語言, 其實不是很適合初學者, 特別是年長的初學者 我覺得如果要學程式設計, 或許可以考慮選擇別種高階語言來入門, 如 VB 或 Pascal 等等, 這樣比較容易, 也比較會有成就感 |
#5
|
||||
|
||||
引用:
我本來就是要練習腦力不要太早老年痴呆的,所以沒有學習時間上的壓力,反正學一點是一點。對中老人來說,其實這些語言都不簡單學。 |
#6
|
||||
|
||||
這個問題還有新的疑問請教一下。
引用:
再者下面,p++,我改成*p++,得出來的答案也是相同的。 而我個人目前的理解是,p=&str以及下面的*p++比較合乎所學的規則,只是不知答案雖一樣,但是否隱含什麼不可知的錯誤呢? thanks |