學益得線上課堂之C語言關鍵字

2021-10-01 19:29:49 字數 3186 閱讀 1185

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...