精華區beta ck49th318 關於我們 聯絡資訊
※ 引述《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