c語言有32個關鍵字,比如為我們常見的int、char、double、return等等都是,但是這些往往並不是考查的重點物件。各大公司的筆試題,從來都不會放過對關鍵字的考查,下面小***就給大家整理了幾個比較重要的關鍵字,大家要牢記哦。
static的用途主要有兩個,一是用於修飾儲存型別使之成為靜態儲存型別,二是用於修飾鏈結屬性使之成為內部鏈結屬性。
是不是沒有看懂,講的太專業了,一般人根本無法理解,下面就來給大家分析分析。
1.靜態型別:
在函式內定義的靜態區域性變數,該變數存在記憶體的靜態區,所以即使該函式執行結束,靜態變數的值不會被銷毀,函式下次執行時能仍用到這個值。
在函式外定義的靜態變數——靜態全域性變數,該變數的作用域只能在定義該變數的檔案中,不能被其他檔案通過extern引用。
2. 內部鏈結屬性
靜態函式只能在宣告它的原始檔中使用。
1.宣告唯讀變數,使得指定的變數不能被修改
const
int a =5;
/*a代表的記憶體不能通過a修改,只能通過其他方式修改*/
const
int*ptr;
/*ptr為指向整型常量的指標,ptr的值可以修改,但不能修改其所指向的值*/
int*
const ptr;
/*ptr為指向整型的常量指標,ptr的值不能修改,但可以修改其所指向的值*/
const
int*
const ptr;
/*ptr為指向整型常量的常量指標,ptr及其指向的值都不能修改*/
2.修飾函式形參,使得形參在函式內不能被修改,表示輸入引數。
int
fun(
const
int a)
;int
fun(
const
char
*str)
;
3.修飾函式返回值,使得函式的返回值不能被修改
const
char
*getstr
(void);
//函式宣告 const *str= getstr(); //函式呼叫
const
intgetint
(void);
//函式宣告const int a =getint(); //函式呼叫
volatile指定的關鍵字可能被系統、硬體、程序/執行緒改變,強制編譯器每次從記憶體中取得該變數的值,而不是從被優化後的暫存器中讀取。例子:硬體時鐘;多執行緒中被多個任務共享的變數等。
1.用於修飾變數或函式,表明該變數或函式都是在別的檔案中定義的,提示編譯器在其他檔案中尋找定義。
extern
int a;
extern
int*p;
extern
int array;
extern
void
fun(
void
);
其中,在函式的宣告帶有關鍵字extern,僅僅是暗示這個函式可能在別的原始檔中定義,沒有其他作用。如:標頭檔案a:a_module.h中包含
extern
intfunc
(int a,
int b)
;
原始檔a: a_module.c中
#include 「a_module.h」
intfunc
(int a,
int b)
此時,展開標頭檔案a_module.h後,為
extern
intfunc
(int a,
int b)
;/*雖然暗示可能在別的原始檔中定義,但又在本檔案中定義,所以extern並沒有起到什麼作用,但也不會產生錯誤*
/int func(int a, int b)
而原始檔b:b_module.c中
#include 「a_module.h」
int ret =
func(10
,5);
展開標頭檔案a_module.h後,為
extern
intfunc
(int a,
int b)
;/*暗示在別的原始檔中定義,所以在下面使用func(5,10)時,在鏈結的時候到別的目標檔案中尋找定義*/
int ret =
func(10
,5);
2.用於extern 「cextern 「c」的作用就是為了能夠正確實現c++**呼叫其他c語言**。
加上extern "c"後,會指示編譯器這部分**按c語言的編譯方式進行編譯,而不是c++的。
/*標頭檔案a_module.h*/
/*標頭檔案被cpp檔案include時,cpp檔案中都含有該自定義的巨集__cplusplus*/
/*這樣通過extern 「c」告訴c++編譯器,extern 「c」{}裡包含的函式都用c的方式來編譯*/
#ifdef __cplusplus
extern 「c」
#endif
sizeof是在編譯階段處理,且不能被編譯為機器碼。sizeof的結果等於物件或型別所佔的記憶體位元組數。sizeof的返回值型別為size_t。
變數:int a;
sizeof
(a)為4;
指標:int
*p;sizeof
(p)為4;
陣列:int b[10]
;sizeof
(b)為陣列的大小,4
*10;int c[0]
;sizeof
(c)等於0
結構體:struct
(int a;
char ch;
)s1;
sizeof
(s1)為8 與結構體位元組對齊有關。
注意:不能對結構體中的位域成員使用sizeof
sizeof
(void
)等於1
sizeof
(void
*)等於4
C 中得mutable關鍵字
在乙個const函式中無法修改類成員的值,通過試用mutable可以改變這種窘況。次關鍵字在mock測試中 mocktest 很有用 class obmockmergerasyncrpcstub public obmergerasyncrpcstub virtual obmockmergerasyn...
C語言總結之 關鍵字
我記得我開始學習c語言的時候,那時候還在讀高中,我們老師就把c語言的關鍵字,全部寫在黑板上,老師說我們下面的兩節課的內容就是 把它給記下來 你還記得標準c有多少個關鍵字嗎?第一 關鍵字描述 c99 關鍵字為32個 如果你還有不認識的,還應該好好複習複習了。關鍵字 意義 auto 宣告自動變數,預設時...
C語言關鍵字之const
const關鍵字是嵌入式程式設計師必須熟悉的。因為它的使用可以增加程式的健壯性,並且使讀者更好地理解程式。它所修飾的變數被叫做 唯讀變數 注意 唯讀變數 常量 千萬不要說被const所修飾的變數就是常量!那只能說明你對const還不太理解!下面就讓我們來分析一下const。首先看以下定義 const...