C語言的32關鍵字

表(1.1)C語言標準定義的32個關鍵字

關鍵字 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 意 義

?auto ? ? ? ? ?聲明自動變量,缺省時編譯器一般默認為

int ? ? ? ? ? ? ?聲明整型變量

double? ? ? 聲明雙精度變量

long? ? ? ? ? 聲明長整型變量

char? ? ? ? ? 聲明字符型變量

float ? ? ? ? ?聲明浮點型變量?

short ? ? ? ?聲明短整型變量

signed ? ? ?聲明有符號類型變量

unsigned ? 聲明無符號類型變量

struct? ? ? ? 聲明結構體變量

union ? ? ? 聲明聯(lián)合數(shù)據(jù)類型

enum ? ? ? 聲明枚舉類型

static? ? ? 聲明靜態(tài)變量

switch ? ? 用于開關語句

case ? ? ? ?開關語句分支

default ? ?開關語句中的“其他”分支

break ? ? ? 跳出當前循環(huán) ?

register? ? 聲明寄存器變量

const ? ? ? ? 聲明只讀變量

volatile ? ? ?說明變量在程序執(zhí)行中可被隱含地改變

typedef ? ? ?用以給數(shù)據(jù)類型取別名(當然還有其他作用)

extern ? ? ? 聲明變量是在其他文件正聲明(也可以看做是引用變量)

return ? ? ? 子程序返回語句(可以帶參數(shù),也可不帶參數(shù))

void ? ? ? ? ? 聲明函數(shù)無返回值或無參數(shù),聲明空類型指針continue結束當前循環(huán),開始下一輪循環(huán)

do ? ? ? ? ? 循環(huán)語句的循環(huán)體

while ? ? ? 循環(huán)語句的循環(huán)條件

if ? ? ? ? ? ? 條件語句

else ? ? ? ? 條件語句否定分支(與if連用)

for ? ? ? ? ?一種循環(huán)語句(可意會不可言傳)

goto ? ? ? ?無條件跳轉(zhuǎn)語句

sizeof ? ? ?計算對象所占內(nèi)存空間大小

1.1,最寬恒大量的關鍵字----autoauto:它很寬恒大量的,你就當它不存在吧。編譯器在默認的缺省情況下,所有變量

都是auto的。

1.2,最快的關鍵字---- register

register:這個關鍵字請求編譯器盡可能的將變量存在CPU內(nèi)部寄存器中而不是通過內(nèi)

存尋址訪問以提高效率馒索。注意是盡可能,不是絕對。你想想,一個CPU的寄存器也就那么

幾個或幾十個,你要是定義了很多很多register變量,它累死也可能不能全部把這些變量放

入寄存器吧,輪也可能輪不到你铛绰。

1.2.1,皇帝身邊的小太監(jiān)----寄存器

不知道什么是寄存器?那見過太監(jiān)沒有?沒有?其實我也沒有。沒見過不要緊,見過就

麻煩大了产喉。^_^,大家都看過古裝戲,那些皇帝們要閱讀奏章的時候,大臣總是先將奏章交

給皇帝旁邊的小太監(jiān),小太監(jiān)呢再交給皇帝同志處理捂掰。這個小太監(jiān)只是個中轉(zhuǎn)站,并無別

的功能敢会。

好,那我們再聯(lián)想到我們的CPU。CPU不就是我們的皇帝同志么?大臣就相當于我們

的內(nèi)存,數(shù)據(jù)從他這拿出來这嚣。那小太監(jiān)就是我們的寄存器了(這里先不考慮CPU的高速緩

存區(qū))鸥昏。數(shù)據(jù)從內(nèi)存里拿出來先放到寄存器,然后CPU再從寄存器里讀取數(shù)據(jù)來處理,處理

完后同樣把數(shù)據(jù)通過寄存器存放到內(nèi)存里,CPU不直接和內(nèi)存打交道。這里要說明的一點

是:小太監(jiān)是主動的從大臣手里接過奏章,然后主動的交給皇帝同志,但寄存器沒這么自覺,

它從不主動干什么事姐帚。一個皇帝可能有好些小太監(jiān),那么一個CPU也可以有很多寄存器,

不同型號的CPU擁有寄存器的數(shù)量不一樣吏垮。

為啥要這么麻煩啊?速度!就是因為速度。寄存器其實就是一塊一塊小的存儲空間,只

不過其存取速度要比內(nèi)存快得多罐旗。進水樓臺先得月嘛,它離CPU很近,CPU一伸手就拿到

數(shù)據(jù)了,比在那么大的一塊內(nèi)存里去尋找某個地址上的數(shù)據(jù)是不是快多了?那有人問既然

它速度那么快,那我們的內(nèi)存硬盤都改成寄存器得了唄膳汪。我要說的是:你真有錢!

1.2.2,使用 register 修飾符的注意點

雖然寄存器的速度非常快,但是使用register修飾符也有些限制的:register變量必須是

能被CPU寄存器所接受的類型九秀。意味著register變量必須是一個單個的值,并且其長度應小

于或等于整型的長度遗嗽。 而且register變量可能不存放在內(nèi)存中,所以不能用取址運算符“&”

來獲取register變量的地址。

1.3,最名不符實的關鍵字----static

不要誤以為關鍵字static很安靜,其實它一點也不安靜颤霎。這個關鍵字在C語言里主要有

兩個作用,C++對它進行了擴展媳谁。1.3.1,修飾變量

第一個作用:修飾變量涂滴。變量又分為局部和全局變量,但它們都存在內(nèi)存的靜態(tài)區(qū)友酱。

靜態(tài)全局變量,作用域僅限于變量被定義的文件中,其他文件即使用extern聲明也沒法

使用他。準確地說作用域是從定義之處開始,到文件結尾處結束,在定義之處前面的那些

代碼行也不能使用它柔纵。想要使用就得在前面再加extern ***缔杉。惡心吧?要想不惡心,很簡單,

直接在文件頂端定義不就得了。

靜態(tài)局部變量,在函數(shù)體里面定義的,就只能在這個函數(shù)里用了,同一個文檔中的其他

函數(shù)也用不了搁料。由于被static修飾的變量總是存在內(nèi)存的靜態(tài)區(qū),所以即使這個函數(shù)運行結

束,這個靜態(tài)變量的值還是不會被銷毀,函數(shù)下次使用時仍然能用到這個值或详。

static int j;

void fun1(void){

static int i = 0;

i ++;

}

void fun2(void){

j = 0;

j++;

}

int main()

{

for(k=0; k<10; k++)

{

fun1();

fun2();

}

return 0;

}

i和j的值分別是什么,為什么?

1.3.2,修飾函數(shù)

第二個作用:修飾函數(shù)。函數(shù)前加static使得函數(shù)成為靜態(tài)函數(shù)郭计。但此處“static”的含義

不是指存儲方式,而是指對函數(shù)的作用域僅局限于本文件(所以又稱內(nèi)部函數(shù))霸琴。使用內(nèi)部函

數(shù)的好處是:不同的人編寫不同的函數(shù)時,不用擔心自己定義的函數(shù),是否會與其它文件

中的函數(shù)同名。

關鍵字static有著不尋常的歷史昭伸。起初,在C中引入關鍵字static是為了表示退出一個

塊后仍然存在的局部變量梧乘。隨后,static在C中有了第二種含義:用來表示不能被其它文件

訪問的全局變量和函數(shù)。為了避免引入新的關鍵字,所以仍使用static關鍵字來表示這第二

種含義庐杨。

當然,C++里對static賦予了第三個作用,這里先不討論,有興趣的可以找相關資料研

究选调。

1.4,基本數(shù)據(jù)類型----short、int灵份、long仁堪、char、float填渠、double

C語言包含的數(shù)據(jù)類型如下圖所示:數(shù)值類型

基本類型

構造類型

指針類型

空類型void

短整型short

整型int

長整型long

單精度型float

數(shù)組

結構體struct

浮點型

雙精度型double

字符類型char

共用體union

枚舉類型enum

C

數(shù)

據(jù)

1.4.1,數(shù)據(jù)類型與“模子”

short弦聂、int鸟辅、long、char莺葫、float剔桨、double這六個關鍵字代表C語言里的六種基本數(shù)據(jù)類型。

怎么去理解它們呢?舉個例子:見過藕煤球的那個東西吧?(沒見過?煤球總見過吧)徙融。那個

東西叫藕煤器,拿著它在和好的煤堆里這么一咔,一個煤球出來了洒缀。半徑12cm,12個孔。

不同型號的藕煤器咔出來的煤球大小不一樣,孔數(shù)也不一樣欺冀。這個藕煤器其實就是個模子树绩。

現(xiàn)在我們聯(lián)想一下,short、int隐轩、long饺饭、char、float职车、double這六個東東是不是很像不同

類型的藕煤器啊?拿著它們在內(nèi)存上咔咔咔,不同大小的內(nèi)存就分配好了,當然別忘了給

它們?nèi)€好聽的名字瘫俊。在32位的系統(tǒng)上short咔出來的內(nèi)存大小是2個byte;int咔出來的

內(nèi)存大小是4個byte;long咔出來的內(nèi)存大小是4個byte;float咔出來的內(nèi)存大小是4個byte;double咔出來的內(nèi)存大小是8個byte;char咔出來的內(nèi)存大小是1個byte。(注意這里指一

般情況,可能不同的平臺還會有所不同,具體平臺可以用sizeof關鍵字測試一下)

很簡單吧?咔咔咔很爽吧?是很簡單,也確實很爽,但問題就是你咔出來這么多內(nèi)存塊,

你總不能給他取名字叫做x1,x2,x3,x4,x5...或者長江1號,長江2號...吧悴灵。它們長得這么像(不

是你家的老大,老二,老三...),過一陣子你就會忘了到底哪個名字和哪個內(nèi)存塊匹配了(到

底誰嫁給誰了啊?^_^)扛芽。所以呢,給他們?nèi)∫粋€好的名字絕對重要。下面我們就來研究研究

取什么樣的名字好积瞒。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末川尖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茫孔,更是在濱河造成了極大的恐慌叮喳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缰贝,死亡現(xiàn)場離奇詭異馍悟,居然都是意外死亡,警方通過查閱死者的電腦和手機剩晴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門锣咒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人李破,你說我怎么就攤上這事宠哄。” “怎么了嗤攻?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵毛嫉,是天一觀的道長。 經(jīng)常有香客問我妇菱,道長承粤,這世上最難降的妖魔是什么暴区? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮辛臊,結果婚禮上仙粱,老公的妹妹穿的比我還像新娘。我一直安慰自己彻舰,他們只是感情好伐割,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刃唤,像睡著了一般隔心。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尚胞,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天硬霍,我揣著相機與錄音,去河邊找鬼笼裳。 笑死唯卖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的躬柬。 我是一名探鬼主播拜轨,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼楔脯!你這毒婦竟也來了撩轰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤昧廷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后偎箫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體木柬,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年淹办,在試婚紗的時候發(fā)現(xiàn)自己被綠了眉枕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡怜森,死狀恐怖速挑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情副硅,我是刑警寧澤姥宝,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站恐疲,受9級特大地震影響腊满,放射性物質(zhì)發(fā)生泄漏套么。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一碳蛋、第九天 我趴在偏房一處隱蔽的房頂上張望胚泌。 院中可真熱鬧,春花似錦肃弟、人聲如沸玷室。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阵苇。三九已至,卻和暖如春感论,著一層夾襖步出監(jiān)牢的瞬間绅项,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工比肄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留快耿,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓芳绩,卻偏偏與公主長得像掀亥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妥色,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 注:這是第三遍讀《C語言深度解剖》搪花,想想好像自從大學開始就沒讀完過幾本書,其中譚浩強的那本《C語言程序設計(第四版...
    HavenXie閱讀 1,736評論 1 6
  • 第一類:數(shù)據(jù)類型關鍵字 1.基本數(shù)據(jù)類型(5個) void 聲明函數(shù)無返回值或無參數(shù)嘹害,聲明無類型指針撮竿,顯式丟棄運算...
    lancely閱讀 1,029評論 0 3
  • 天色青了,烏云來了 荷偏著頭看天空 靜看著雨什么時候落 雨落下來頃刻覆蓋大地 荷開心的接著從天而降的小玩意 應接不...
    行思坐憶閱讀 191評論 1 1
  • 最近在學習混合開發(fā)笔呀,畢竟大勢所趨 幢踏,在這里記錄一下自己的學習過程吧。 Cordova提供了一組設備相關的API许师,通...
    星落塵閱讀 437評論 0 0
  • 膝關節(jié)真的要置換嗎房蝉? 本市唐市鎮(zhèn)71歲老阿姨平某,高血壓微渠、頸椎病搭幻、腰間盤突出、骨質(zhì)增生逞盆、坐骨神經(jīng)痛檀蹋,更要命的是雙膝...
    聽雨XJZ閱讀 259評論 0 1