※ 引述《kentman.bbs@bbs.cs.nthu.edu.tw》之銘言:
> ※ 引述《MaxFactor》之銘言:
> > 請問char *string與char string[10],除了大小不同外(後者最
> > 多只能放10個字元),還有哪裡不一樣?為什麼有時候在寫程式時
> > ,只要將char *string改寫成char string[10],程式就能正常執
> > 行?要如何分辨該用哪一種?
> char *string只是宣告一個指向char變數的指標
> char string[10]配置了10*sizeof(char)的記憶體,而string
> 則指向這塊記憶體的開頭。
> 所以最大的差別就是第一項沒有配置記憶體,所以如果你對
> 第一項宣告的string做一些像是assignment的動作,程式就會
> 當掉(segmentation fault),因為string並沒有指向任何的記
> 憶體
這時候就可以用動態配置記憶體
char *string = new char [lengthMAX]
--
(.⊙﹏⊙.)y
--
□ Origin: 月夜星空 - Ns.twbbs.org □ From: 210.244.16.135
> -------------------------------------------------------------------------- <
發信人: kentman.bbs@bbs.cs.nthu.edu.tw (爛板子), 看板: Programming
標 題: Re: [C]請問char *string與char string[10]有何不同?
發信站: 清華資訊(楓橋驛站) (Sun Apr 20 17:31:57 2003)
轉信站: Ptt!news.ntu!freebsd.ntu!news.cs.nthu!maple
※ 引述《Tstar.bbs@bbs.ccns.ncku.edu.tw (好想去拉斯維加斯)》之銘言:
> ※ 引述《chtai@csie.nctu.edu.tw (奈爾森)》之銘言:
> > 這樣沒有意義丫^^||,因為你沒有給定lengthMAX的初值是什麼哩
> > 比較常用的做法應該是寫成這樣吧
> > define lengthMAX 10
> > 這樣以後就算你想要修改最大長度的值
> > 也可以在程式碼一開頭就找到它,很容易就改到了
> > 而且這是個有意義的變數名稱,
> > 對於程式碼閱讀來說,也是易懂多了:)
> > 以上,有錯請指教 ^^
> 可是我想要長度由使用者輸入
> 像是 輸入一個班級有幾個學生 然後再把成績個別存入
> 那"有幾個"學生 就不一定了啊
> 或者 有其他的方法嗎??
這是動態記憶體配置,請用malloc
example:
char *string;
string = (char *)malloc(10*sizeof(char));
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: samuel.cs.nthu.edu.tw