c語言的一些關鍵字

2021-06-26 19:18:02 字數 1652 閱讀 6105

1.switch case

case後面只能是整型或者字元型的常量或者常量表示式,並且不要忘記了加default:

switch(b)

{ case 3:

cout<<"a="<

2.return 關鍵字

return用於終止乙個函式並返回其後面跟著的值,若果是表示式一般加上括號,規範性。但是return 不可以返回指向棧記憶體的指標,因為該指標在函式結束後被自動銷毀了。

3.const關鍵字

const是constant的縮寫,是恆定不變的意思。const的推出是為了取代預編譯,消除它的缺點(浪費記憶體),繼承它的優點(不可改變),提高效率

使用方法:const int max = 100;

注意:const修飾變數時一定要在定義的時候同時初始化。

const 和#define的區別

1.const int max = 100;

#define pi 3.1415

使用#define時末尾沒有;要看清楚

2.const更節省空間,避免不必要的記憶體分配,編譯器通常不為普通的const變數分配儲存空間,而是將他們儲存在符號表中,這使得它成為乙個編譯期間的值,沒有了儲存於讀記憶體的操作,因此效率更高。#define是巨集替換,將pi位置替換為3.1415,每個位置都要替換,相對要浪費記憶體。

3.1 const修飾一般變數時:int const i = 2;和 const int i = 2;是一樣的效果,因為const關鍵字會忽略型別標示符,所以想要判斷const修飾到底是誰,可以將型別標示符去掉距離誰近就是修飾的誰。

3.2 const int *p ,int const *p,int *const p

按照3.1中的規則去掉int,剩餘的部分為const *p,const *p,*const p,對於前兩個表示的是p指向的物件不可以邊,但p可以變。對於*const p ,p不可以邊,但是指向的物件可以變。

3.3 修飾函式的引數

void fun(const int i)表示在函式體中該引數不可變,防止惡意或者無意見修改i。

4.union 關鍵字

union與struct用法非常相似,只是struct裡的資料成員是同時出現的,而union裡同時間只能出現乙個。

5.typedef關鍵字

typedef並不是定義了新的型別而是為乙個已知型別定義乙個別名 typedef int int32;int32 b = 12;這樣使用。類似於引用int &a = b;以後a就是b的別名。同時也和const和#define也很類似。

6.malloc和calloc的區別

首先void * malloc(size_t,size)

void * calloc(size_t numelement,size_t sizeofelement)

引數不一樣,malloc只有乙個大小,而calloc則是元素個數和每個元素的大小。

其次calloc會初始化所分配的記憶體空間,初始化值為0.而malloc則不會。

7.迷途指標

迷途指標也叫懸浮指標、失控指標,**於delete 乙個指標後又使用了該指標。delete指標只是讓這個指標不在指向原來指向的物件,但是指標本依然存在,於是還是可以使用的,所以如果這個時候用了該指標,由於這個時候該指標的指向位置不確定會產生不可預知的錯誤。解決方法是delete後一定要將該指標設為null或者指向乙個常量。

c語言的一些關鍵字

保留關鍵字 char short int unsigned long float double struct union void enum signed const volatile typedef auto case continue default do else for goto if re...

C語言的一些關鍵字

c語言作用關鍵字 static const typedef extern register volatile static 1.修飾區域性變數時 在函式體內 乙個被宣告為靜態的變數在函式過程中值保持不變,使得宣告週期延長至程式結束,此時的變數存放區域為資料段上。從而可以少使用全域性變數 const使...

關鍵字 一些關鍵字用法總結

register 用register宣告的變數稱暫存器變數,在可能的情況下會直接存放在機器的暫存器中 但對32位編譯器不起作用,當global optimizations 全域性優化 開的時候,它會做出選擇是否放在自己的暫存器中 不過其它與register關鍵字有關的其它符號都對32位編譯器有效。c...