看板 C_and_CPP 關於我們 聯絡資訊
如題,這可能很少人問過 書上寫說區域變數其實都自動預設auto, 在編譯過程中並不會配置一塊記憶體空間,而是在程式執行時以堆疊的方式存放, 因此他是屬於動態的變數。 ^^^^^^^^^^^^^^^^^^^^^^ 此段是出自洪維恩的書 但是又在動態記憶體章節上面寫說C++都是預設靜態什麼的 很讓人搞混 ok 總之我目前的認知是一般的陣列是靜態宣告... (以下都是區域變數) int a; 跟 auto int a; 等價,而且這是動態 int a[5]; 是靜態,,,應該吧? 那假設我宣告如下(當然是區域): auto int a[5]; 這到底該算靜態還是動態? 已經試過編譯可以過... 如果是靜態那不是表示auto關鍵字在這裡沒用嗎@@? 如果是動態的話那跟 int* a; a = new int[5];又有何不同 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.182.130 ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 14:52) ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 14:54)
diabloevagto:沒有new就是靜態 01/19 14:55
diabloevagto:話說,沒看過你說的auto...我只知道c++11的auto... 01/19 14:56
auto是c關鍵字...可以看一下 所以表示就算在陣列前面打auto也不會自動回收 那這關鍵字真的很怪... ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 14:57)
scwg:那是從 K&R C 一路帶到 C++ 的 auto... 01/19 14:57
diabloevagto:一般來說,你在程式中已經內定的就是放在stack 01/19 14:58
diabloevagto:你可以看一下第十戒 01/19 14:59
我不太懂跟第十戒有何關係...因為他沒有講到auto..
james732:那個auto在舊的C++幾乎沒有用處,在新的版本有別的用處 01/19 14:59
diabloevagto:s大,c的auto跟c++11的auto是一樣的? 01/19 14:59
※ 編輯: amozartea 來自: 60.248.182.130 (01/19 15:01)
scwg:舊 keyword 新用 01/19 15:01
diabloevagto:http://ppt.cc/ZPoB 照這個來看好像是不同的東西 01/19 15:01
diabloevagto:看起來好像沒什麼用的感覺- - 01/19 15:01
diabloevagto:to s大,了解了! 01/19 15:01
第五戒比較接近我的問題就是了... ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 15:02)
james732:我覺得問題最大的是「靜態」兩個字,跟static會混亂 01/19 15:02
diabloevagto:你中間有提到靜態及動態跟stack,所以我認為你看一下 01/19 15:03
diabloevagto:第十戒應該會有些想法,主要是針對你最後一行 01/19 15:03
diabloevagto:#1EpBv8oW 不知道這篇對你會不會有所幫助 01/19 15:05
diabloevagto:我覺得原po特別標記的那句話怪怪的... 01/19 15:07
firejox:那原本在C裡是跟static是相對的 但現在C並不太需要他 01/19 16:22
tropical72:應還要再分local/global判斷,static與auto/extern相對. 01/19 16:29
firejox:說的也是 不過static與extern的相對 跟auto的不一樣 01/19 18:04
ericinttu:有機會的話,還是多翻一些英文書看看別人怎麼表達這些東 01/20 02:41
ericinttu:西. 有時候,中文句子的結構, 是不容易讓新手了解它裡面 01/20 02:42
ericinttu:的含意, 而英文, 抓到主詞/動詞/介繫詞等字眼與結構, 就 01/20 02:43
ericinttu:比中文還更快抓到原作者要表達的意思. 01/20 02:44