C語言學習之關鍵字

2021-06-06 14:05:26 字數 1186 閱讀 6940

在我們講解關鍵字之前,我們先來了解一下宣告跟定義的區別

定義:所謂定義就是(編譯器)建立了乙個物件,並為這一物件分配了記憶體並且給它取了乙個名字,這個名字就是我們經常所說的變數名或者物件名,乙個變數或者物件在一定區域內(比如函式內、全域性等)只能定義一次

宣告:有兩重含義

1、告訴編譯器,這個名字已經匹配到一塊記憶體了,下面的**用到的變數或物件在其他地方定義的,宣告可以出現多次。

2、告訴編譯器,這個名字已經被預訂了,別的地方再也不能用它來作為變數名或物件名。

宣告和定義的本質區別是:定義建立了物件並且為這個物件分配了記憶體,而宣告則沒有分配記憶體。

下面我們開始來看一下關鍵字

auto:在預設狀態下,編譯器預設的所有變數都是auto的。

register:這個關鍵字請求編譯器盡可能地將變數存放在cpu的內部暫存器中,而不是通過記憶體定址訪問以提高效率。

使用register應當注意,register變數必須是能被cpu暫存器所接受的型別,這意味著register變數必須是單個的值,並且長度應小於或等於整型的長度,而且register變數可能不存放在記憶體中,所以不能用取址運算子&來獲取register變數的位址。

sizeof:記住,sizeof不是函式

switch  case:要注意,case後面只能是整型或字元型的常量表示式。

return 語句不可返回指向「棧記憶體」的「指標」因為該內存在函式體結束時會自動銷毀。

const為唯讀變數,具有不可變性,必須在定義的同時初始化,例

const int max = 60;  //合法

const int min;

min = 20;       //非法

列舉與#define的區別

1、#define巨集量只是在預編譯的時候進行簡單的替換,而列舉常量則是在編譯的時候確定其值。

2、一般在編譯器裡,可以除錯列舉變數,但是不能除錯巨集常量。

3、列舉可以一次性定義大量相關的常量,而#define巨集一次只能定義乙個。

union關鍵字:大小端對union型別的資料會有影響。

所謂大端模式,就是資料的高位元組存放在低位址中,而資料的低位元組則存放在高位址中。

小端模式,則是資料的低位元組存放在低位址中,資料的高位元組存放在高位址中。

C語言學習之關鍵字 1

c語言中,關鍵字一共有32個,其中尤其要注意的是sizeof是關鍵字,不是函式。以下分別對各個關鍵字進行學習。首先,我們要弄明白以下兩個概念 定義和宣告。定義 就是建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常所說的變數名或物件名。乙個變數或物件在一定的區域內 比如函...

Linu學習(c語言學習之關鍵字)

對於linux的開發而言c語言非常重要,本節學習的是c語言常用的關鍵字以及運算子的操作。什麼是關鍵字?就是編譯器預先定義的有一定意義的字串,在c語言中有32個關鍵字。下面是列舉的一些關鍵字 sizeof 編譯器檢視變數所佔的記憶體大小的工具 return 函式的返回值 資料型別關鍵字 占用的位元組數...

c語言學習筆記 關鍵字

auto 定義變數為區域性變數,在函式中定義變數時預設為auto static 定義靜態區域性變數,使用static修飾的變數將被放置到資料段,為空鏈結 register 告知編譯器將盡可能變數存放到暫存器中,但該關鍵字只是乙個請求,並不能保證執行,linux中就有乙個變數被此關鍵字修飾 gd,被此...