c語言學習心得

2021-08-09 17:34:51 字數 2284 閱讀 2071

變數是程式可操作的儲存區的名稱。c中每個變數都有特定的型別,型別決定了變數儲存的大小和布局,該範圍內的值都可以儲存在記憶體中,運算子可應用於變數上。

即告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數定義指定乙個資料型別,幷包含了該型別的乙個或多個變數的列表。

變數宣告向編譯器保證以指定的型別和名稱存在,編譯器可在不需要知道變數完整細節的情況下也可以繼續進一步的編譯。變數宣告只在編譯時有它的意義,在程式連線時編譯器需要實際的變數宣告。

變數多的宣告有兩種情況:

1、需要建立儲存空間的。如:int a在宣告的時候已經建立了儲存空間。

2、不需要建立儲存空間的,使用extern關鍵字宣告變數名而不是定義它。如:extern int a其中變數a可以在別的檔案中定義。

除非有externa關鍵字,否則都是變數的定義。

|–extern int i ; //宣告,不是定義

|–int i; //宣告,也是定義

|–extern int a=0;//定義乙個全域性變數並賦給初值。一旦賦給初值一定是定義,定義才會分配儲存空間。

1.左值(lvalue):指向記憶體位置的表示式被稱為左值表示式,可出現在賦值號的左邊和右邊。

2.右值(rvalue):儲存在記憶體中某些位址的數值。不能對其進行賦值的表示式。僅可以出現在賦值號右邊。

變數是左值,數值型的字面值是右值。

需要儲存資料的時候,用左值;需要讀取資料 的時候用右值。

(1)記憶體定址由大到小,優先分配記憶體位址比較大的位元組給變數,所以說變數越先定義,記憶體位址就越大。

如下面**,先定義變數 a,再定義變數 b,列印出 a 的位址是 0x7fff5fbff828,b 的值是 0x7fff5fbff824。a 的位址比 b 的位址大 4 位元組。

(2)變數位址的獲取方式:& 變數名。

(3)輸出位址的方式:%p。

(4)乙個變數一定要先初始化才可以使用,因為 c 語言中預設乙個沒有初始化的變數值是乙個不可知的很大值。

第一點和第四點有些小夥伴執行結果可能有差異:

環境說明:

os:ubuntu 16.10

gcc:6.2.0

實際執行結果發現,記憶體定址由小到大,越先定義的值,記憶體位址越小。變數如果沒有初始化,預設輸出為 0。

儲存類定義c程式中變數/函式(可見性)和生命週期。

auto儲存類:所有區域性變數預設的儲存類。只能用在函式內,修飾區域性變數。

register儲存類:定義儲存在暫存器中而不是ram中的區域性變數。變數的最大尺寸等於暫存器的大小(通常是乙個詞),且不能對它應用一元的』&』運算子(因為它沒有記憶體位置)。

暫存器只用於需要快速訪問的變數,比如計數器。還應注意的是,定義 『register』 並不意味著變數將被儲存在暫存器中,它意味著變數可能儲存在暫存器中,這取決於硬體和實現的限制。

static儲存類:指示編譯器在程式的生命週期內保持區域性變數的存在,而不需要在每次它進入和離開作用域時進行建立和銷毀。因此,使用 static 修飾區域性變數可以在函式呼叫之間保持區域性變數的值。

static 修飾符也可以應用於全域性變數。當 static 修飾全域性變數時,會使變數的作用域限制在宣告它的檔案內。

static 是全域性變數的預設儲存類,以下兩個變數 (count 和 road) 都有乙個 static 儲存類。

extern儲存類:用於提供乙個全域性變數的引用,全域性變數對所有的程式檔案都是可見的。當您使用 『extern』 時,對於無法初始化的變數,會把變數名指向乙個之前定義過的儲存位置。

儲存類參考:

return_type function_name( parameter list )

在 c 語言中,函式由乙個函式頭和乙個函式主體組成。下面列出乙個函式的所有組成部分:

函式宣告

告訴編譯器函式名稱及如何呼叫函式。函式的實際主體可以單獨定義。

包括以下幾個部分:

return_type function_name( parameter list );
函式宣告中,引數名稱並不重要,引數的型別是必須的。

當您在乙個原始檔中定義函式且在另乙個檔案中呼叫函式時,函式宣告是必需的。在這種情況下,您應該在呼叫函式的檔案頂部宣告函式。

呼叫函式

函式宣告

程式實體呼叫函式

函式定義

函式引數

形式引數進入函式時被建立,退出函式時被銷毀。

傳值呼叫和引用呼叫

C語言學習心得

區域性變數僅在包含它的最內的大括號內有效 for迴圈中定義的變數僅在for迴圈內有效!在main 中定義的變數,不能在被調函式中使用 除全域性變數 普通變數或指標變數間的賦值,非位址概念 不同的普通變數或不同的指標變數在記憶體中所分配的空間位址不同 兩者間傳遞的是內容 對普通變數而言 內容僅僅是具體...

c語言學習心得(3)

學習c語言已經一年多,對c也算得上半個入門者,期間也寫過一些自娛自樂的 其實個人認為無論學習什麼語言,最重要的是掌握習程式設計思想,然而c語言一種學習程式設計思想的基礎語言。所以,c語言的重要性不言而喻。一 課本 無論用的是什麼書,要學好c語言,把書上的每乙個例題 習題的 讀懂,這是學c最基本的要求...

初學C語言學習心得

hello!這是我的第一篇部落格,這裡是初學c語言的大三萌新,雖然大學以來一直都有在接觸c語言,但學習的都是一些比較基本的東西,隨著興趣的提公升我也開始認真的深入學習c語言,現在大約初步學習了兩周左右,從今天開始我會定期分享一些我學習c語言的學習心得與大家分享 目前使用的開發環境為 ubantu12...