-
簡單而深入地告訴你,你就會明白:
為什麼有這麼多所謂的 int、float、double、char、short 等? 我認為人們處理的事情基本上都在這個範圍內,少一點是不夠的,多一點是浪費空間。 如果要設定其他型別的變數,可以這樣做。
C構造可以按型別在記憶體中實現(只是不是關鍵字),但是空間的大小是劃分的,記憶體不知道是什麼型別。
這就是編譯的原理:靜態變數、外部變數、暫存器變數和自動儲存變數。
像我一樣思考問題(我開始學習甚至包括為什麼你必須尋找它前面的標誌,為什麼要使用這個符號? 原因和意義是什麼? )
它在記憶體中分為 5 個區域。
全域性靜態區域:
就您談論的靜態變數而言,外部變數也是如此。
暫存器:簡單來說,就是CPU中的“記憶體”,它有什麼作用? 計算機處理從中讀取的資料,並由記憶體中的資料進行處理。
但有時,例如,1 億個週期用於讀取 1 億次,將此變數保留在 CPU 暫存器中可以節省每次讀取的記憶體往返時間。 提高程式執行效率。
堆疊(動態區域):是呼叫函式時釋放的自動變數:如結構圖。
入口)被比作記憶體中的堆疊(動態區域)。
資料從入口儲存到最內層,例如進入。
main()
inta=1,b=2;
f(a,b)
假設記憶體空間(堆疊)的 %1 用於輸入記憶體
呼叫 f(a,b)。
f(intx,inty)int
z=3;z=x+y+z;
printf("%d",z);
呼叫函式返回到 %2 空間(其中包含 mian
f(空格))。
呼叫完成後,它只能在一端釋放,在末端釋放一端,因此 f() 首先出現在最外層。
呼叫完成後,將釋放返回給 main() 函式(%1 堆疊空間)的字的 f() 中的變數 z。
如果定義靜態
f() 中的 z 不是放在堆疊中,而是放在靜態區域。
明白了? 了解資料結構和編譯原則。 現在深入挖掘表明你喜歡動腦筋,很好!
-
要回答清楚,還是需要很長,最後可能和教材裡的內容差不多,不同的變數型別占用的記憶體空間不同,用來表達不同範圍的資料來適應不同的目的,比如你有乙個變數從頭到尾都是乙個整數,值很小, 你使用整數變數,這樣更節省記憶體,速度更快,如果你的值包含小數,並且精度很高,那麼你需要選擇乙個精度合適的浮點變數。
-
你要把資料放在電腦記憶體裡,資料不能浮動,不然你為什麼要記憶體呢?
例如,如果你定義了乙個整數變數 a,那麼計算機會在記憶體中指定乙個空格來放置 a 的值,然後我們可以通過變數 a 找到 a 的對應值,但 a 只能放......其他變數型別也是如此。
原始 = (x 3 - 1) -x 2 + x + 1) = (x - 1) (x 2 + x + 1) -x 2 + x + 1)。 >>>More