C語言中的關鍵字

2021-07-15 18:01:10 字數 2571 閱讀 2599

register

作用:請求編譯器盡可能地將變數存在cpu記憶體暫存器中。而不是通過記憶體定址訪問的           方法,

好處:省去了cpu處理訪問記憶體資料的時間。

注意事項:

1,register修飾變數的型別必須是cpu能夠接受,register變數

必須是乙個單個的值,並

且長度應該小於或者等於整型的長度,

2,register變數可能不是在記憶體中儲存,所以不能用&來取位址,因為&用來獲取的是內

存的位址,

因為暫存器的數目有限,而且智慧型接受特定型別的資料,真正起作用的register修飾

符都是依賴執行程式的機器,大部分多餘的register修飾符都會在程式設計的時候被自動忽

略,儘管這樣是合法的,但是這個修飾符僅僅是暗示,而不是命令。

static

修飾變數和函式,延遲其生命週期,在程式結束的釋放

變數分為區域性變數和全域性變數,

修飾區域性變數:儲存在資料區的靜態資料區,

只被初始化一次,之後每次呼叫函                                      數時,該變數值為上次函式退出時的值。即,改變量的生存擴充套件                                    到整個程式執行時間段內。

例程

如果用static修飾區域性變數,那麼函式的釋放在程式結束時,此前就保留上次函式執行的數值。

注意事項

1, 寫程式的時候盡量少用全域性變數,因為全域性變數很危險,能夠被所有檔案訪問

2, 若全域性變數只想在本檔案內呼叫,則可以用static呼叫,此時static起到了保護的

作用extern

外部宣告不是本原始檔的變數,就是告訴編譯器,這個識別符號雖然沒有在本檔案中定義,但是在其他檔案中被定義為全域性變數,你可以放行。

如果在a.c函式中呼叫b.c,則需要在a.c中宣告b.c

extern char b()

extern int count;

void print()

注意點:宣告函式或者變數可以有n次,但是它們只能定義一次,如果某個全域性變數在多個檔案中被定義,那麼會編譯器會報錯,因為出現了重定義 

const

(1)修飾唯讀變數,該變數對應的空間值可以變化,但是不可以通過修飾的變數名         來修改

const int *p = #

p++;

(*p)++;(不可變)

num++;

int const *p = #

p++;

(*p)++;(不可變)

num++;

int * const p = #

p++; (不可變)

(*p)++;

num ++;

總結:const離哪個近,就不可以通過它的名字來求改變量的值;

(2)便於編譯器對資料型別的檢查,如,定義乙個const int i,編譯器知道i是乙個不可以修改的變數

(3)可以避免意義模糊的數字出現,同樣可以很方便地進行引數的調整和修改。 同巨集定義一樣,可以做到不變則已,一變都變!

(4)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。

在函式前加const作用:函式實現者的好處,在編寫函式時,不可修改該函式的形參

char *strcpy( char *dest,const char *src)

(6) 可以節省空間,避免不必要的記憶體分配。 例如

#define pi 3.14159 //常量

const doulbe pi=3.14159; //此時並未將pi放入rom中 ...... 

double i=pi; //此時為pi分配記憶體,以後不再分配!

double i=pi; //編譯期間進行巨集替換,分配記憶體 

double j=pi; //沒有記憶體分配 

double j=pi; //再進行巨集替換,又一次分配記憶體!

const定義常量從彙編的角度來看,只是給出了對應的記憶體位址

,而不是象#define一樣給出的是立即數,所以,const定義的常量

在程式執行過程中只有乙份拷貝,而#define定義的常量在記憶體中

有若干個拷貝。 

使用條件:一般用於修飾函式的形參:避免在函式實現中,修改函式實參的值

typedef

為一種資料型別定義乙個新名字

1, 提高**的移植性。

2, 方便在程式設計過程中定義變數

3, 解釋某些變數的意思,(起到注釋的作用)

c語言中關鍵字

static 修飾區域性變數,改變變數的生命週期和儲存空間,但是不改變作用域,仍然是乙個區域性變數,作用域僅限於該 修飾全域性變數,改變變數的作用域只能在當前檔案訪問,不能在其他檔案訪問 修飾函式,改變函式的作用域,函式只能在本檔案中被呼叫,不能在其他檔案被呼叫。extern 可以修飾變數和函式,表...

C語言中的關鍵字!

今天總結一下c中的關鍵字 資料型別關鍵字 12個 1 char 宣告字元型變數或函式 2 double 宣告雙精度變數或函式 3 enum 宣告列舉型別 4 float 宣告浮點型變數或函式 5 int 宣告整型變數或函式 6 long 宣告長整型變數或函式 7 short 宣告短整型變數或函式 8...

c語言中的關鍵字

auto,static,register分析 auto 即c語言中區域性變數的預設屬性 auto即c 語言中區域性變數的預設屬性 static 修飾的區域性變數儲存在程式靜態區 static 修飾的全域性變數作用域只是宣告的檔案中 static 修飾的函式作用域只是宣告的檔案中 register關鍵...