重溫c語言–讀c語言深度解刨有感
#c基礎的溫習
可以這樣認為,很多語言都有c語言的影子。同樣除了組合語言,c語言是最靠近底層的語言。
自我認為,程式設計師編寫程式或者設計架構的時候,一定得考慮程式執行的資源占用與釋放問題,
畢竟絕大部分程式都是執行在作業系統上的。
定義:如:int i;
指編譯器建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常所說
的變數名或物件名。
宣告:如extern int i;
有兩重含義:1、告訴編譯器,這個名字已經匹配到一塊記憶體上了,下面的**用到變數或物件是
在別的地方定義的。宣告可以出現多次。
2、告訴編譯器,我這個名字先預定了,別的地方再也不能用它來作為變數名或物件名。
static修飾符–用來表示不能被其它檔案訪問的全域性變數和函式:
修飾變數:無論是區域性還是全域性變數,它們都存在記憶體的靜態區,當函式執行完時,靜態變數也不會
釋放,函式下次使用時,還會用到這個值。
修飾函式:指對函式的作用域僅侷限於本檔案,又稱為內部函式。
對於迴圈語句的注意點:
在多重迴圈中,如果有可能,應將最長的迴圈放在最內層,最短的迴圈放在最外層,以減少cpu跨
切迴圈層的次數。
迴圈要盡可能的短,要使**清晰,一目了然。
return關鍵字:
return用來終止乙個函式並返回其後面跟著的值。
return語句不可返回指向「棧記憶體」的「指標」,因為該內存在函式體結束時被自動銷毀。
const修飾的唯讀變數:
定義const唯讀變數,具有不可變性。
編譯器通常不為普通const唯讀變數分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯
期間的值,沒有了儲存與讀記憶體的操作,使得它的效率也很高。
volatile關鍵字:
它修飾的變數表示可以被某些編譯器未知的因素更改,比如作業系統、硬體或其他執行緒等。
遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊位址的
穩定訪問。
typedef關鍵字:
給乙個已經存在的資料型別(不是變數)取乙個別名,而非定義乙個新的資料型別。
C語言 重溫C語言
練習 提取碼 4pzi int zippo 5 陣列zippo 5 的首元素為zippo 0 include void test int b intmain printf 實參陣列a大小 d位元組 n sizeof a 實參陣列a大小 20位元組 test a return0 int a 5 int...
《C語言深度刨析》整理 記憶體管理
一 記憶體的儲存區 1.棧 堆疊 區 堆區 靜態區等 1 棧區 堆疊 stack 由編譯器自動分配釋放 存放函式引數值,區域性變數等。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會自動被毀.其特點是 效率高,但空間大小有限 2 堆區 heap 一般由程式設計師分配釋放 由malloc ...
釋放C語言的靈魂! 讀《征服C指標》有感
釋放 c語言的靈魂!讀 征服 c指標 有感 學習c語言已經是5年前的事了,當時在大學的階梯室上課。老師像念經一樣,下面的學生都睡覺。我也不例外,但因為參加了乙個程式設計比賽。我不得已自學c語言,我記得當年考試考了90分,但程式設計作品就沒有交。證明中國式教育,賦予了我理論知識,卻忘卻了實際操作。看到...