2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
char *st="how are you";
這個定義有問題吧。。。字符串沒地方放呀。。。
應(yīng)該是
char st[]="how are you";
A 對。
B a是數(shù)組名,沒法自增。
C a只有11個字符,而st有11個字符,再加上一個'\0'是12個,不夠用。
D 沒給a的長度。
那這些內(nèi)存什么時候釋放呢?
比如
char st[]="how are you";
是在聲明所在的函數(shù)結(jié)束的時候釋放,但是
char *st="how are you";
這樣聲明的話,st指針可以指向別的東西。就不可能在這個指針消亡的時候釋放掉"how are you"所占的內(nèi)存。

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個贊
st被定義為指針類型,由C自動分配內(nèi)存首址,并且包括首址在內(nèi)的連續(xù)向后12個內(nèi)存地址內(nèi)各存放一個字符,等價于char st[]="how are you"。
如果是全局變量,程序沒執(zhí)行完畢就一直不會釋放,由于定義指針st時已經(jīng)賦值,st也不會指向其他已被占用的有用內(nèi)存地址。這么說吧,它除了在被引用時和直接定義的不定長度數(shù)組略有區(qū)別(比如數(shù)組名不能自增自減),其余都是可以相互交換使用的。
- 2 回答
- 0 關(guān)注
- 636 瀏覽
添加回答
舉報