Re: [課業] 程設作業

看板NTUE-CS100作者 (mat)時間17年前 (2008/03/26 00:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串8/14 (看更多)
: : data = new int[size]; //動態分配 : ^^^^^ O_Q/有問題 為什麼不是*data ? 簡單講,等號右邊回傳的是memory address,所以直接用data 因為data本身是指標 指標就是拿來存放memery address的 要小心pointer的星號,在不同的地方,有不同的涵義 1.在宣告的時候 int* data; //這裡的星號代表宣告的data是個指標 2.使用的時候 data //這是一個address *data //提取該address的memory內容 狀況2的星號有「提取」這個動作,而狀況1沒有 所以回到最上頭的例子 (A) int* data = new int[size]; (B) int* data; data = new int[size]; (A)跟(B)的寫法等價,效果一模一樣,這樣瞭解嗎XD : 最後要補個delete嗎? 還是說因為我只是想"由輸入個數決定陣列大小" : 所以以目前為止並不需要去delete它 : 如果真要加delete的話應該要加在哪呢? : 如果加在 myStack::myStack(){....} 裡的話 好像不行 等於存檔後又刪掉=口= class除了constructor之外 還有一種叫destructor的東西 函數同class名稱,只是前面多加個小蚯蚓~ class毀滅的前夕,系統會自動呼叫這個函數 myStack::~myStack(){ //通常記憶體釋放會放在這裡面 delete [] data; } int main(){ myStack gogo; //這時候會呼叫constructor ..... ... delete gogo; //這時候就會執行destructor,釋放會在這裡執行 } 照理說有new,就要有delete 所以你這樣思考是好習慣 : 然後 順便想問一下 例如說int* ip = new int[100] : 和int* array_ptr = new int[100] : 這兩個是相等意思的嗎? 我看課本7-38看不出來差在哪邊? o_O"> : (更蠢的問題是 一定要用array_ptr嗎? 可以用例如說int* Godknows= new int[100]) 當然可以呀 指標也是一種變數 名字可以隨便亂取。 : 問題之多的拉拉Orz -- 「人生有很多個十年,但如果剛好是十八歲到二十八歲,那就是一輩子了。」 「我們常常高估十年後能做的事,卻忽略一年內能做的事」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.15.230 ※ 編輯: chchwy 來自: 203.68.15.230 (03/26 00:52)

03/26 00:50, , 1F
大感謝!<(_ _)>(泣)
03/26 00:50, 1F
※ 編輯: chchwy 來自: 203.68.15.230 (04/01 23:58)
文章代碼(AID): #17wIoY8n (NTUE-CS100)
討論串 (同標題文章)
文章代碼(AID): #17wIoY8n (NTUE-CS100)