C++編程知識快速復習(上)(精華高效全面版)

總第001篇

C++知識比較多,也比較亂剔桨,對于我們長期從事實戰(zhàn)開發(fā)的人員來說屉更,很多基礎知識很容易遺忘,自己看書復習又沒有那么多時間洒缀,即于此瑰谜,在接下來的三篇文章,概括講解C++編程知識精華树绩,旨在讓大家可以快速的復習和翻閱萨脑,讓開發(fā)更有效率。

1饺饭、C++基本結構

C++語言由頭文件與源文件組成渤早。

頭文件中包含:版權與版本信息、宏定義瘫俊、函數(shù)聲明和類的聲明鹊杖。宏定義為是了防止頭文件被重復引用。<>引用頭文件則直接在系統(tǒng)庫中查找頭文件军援;“ ”引用頭文件則先在當前工程目錄下查找仅淑,若工程目錄中不存在然后在系統(tǒng)庫中查找称勋。

源文件中包含:版權與版本信息胸哥,對頭文件的引用,系統(tǒng)功能代碼的實現(xiàn)赡鲜。用ifndef/define/endif結構產(chǎn)生預處理的宏定義塊空厌。類成員函數(shù)可以在類聲明中被定義,并且自動生成內聯(lián)函數(shù)银酬,這雖然會使書寫方便嘲更,但會造成風格上的不一致,因此建議頭文件中只存放聲明而不定義揩瞪。

頭文件的作用:a.很多時候不便公開頭文件代碼赋朦,用頭文件來調用庫功能,編譯器從庫中提取相應的代碼李破;b.頭文件能加強安全類型的檢查宠哄,如果接口實現(xiàn)錯誤會報錯,以便開發(fā)者調試嗤攻。

2毛嫉、C++基本要素

標識符:只能是字母、數(shù)字妇菱、下劃線組成承粤,且不能以數(shù)字開頭暴区。標識符在C++中區(qū)分大小寫,長度是任意的辛臊,一般前1024個是有意義的仙粱。C語言中一般前16個是有效的。

常量:在運行時不能被改變彻舰,在定義常量時可以設置初始值缰盏。對于常量,編譯器將其放置于一個只讀的存儲區(qū)域淹遵。

變量:在程序中可以被隨意賦值口猜,對于每一個變量都有兩個屬性:左值和右值。左值是指變量的地址值透揣,即存儲變量的內存地址济炎;右值是變量的數(shù)據(jù)值,即內存地址中存儲的數(shù)據(jù)辐真。

變量初始化的幾種形式如下圖:

3须尚、變量的存儲類型

變量的聲明是告知編譯器變量的名稱和數(shù)據(jù)類型,變量的定義是為變量分配存儲區(qū)域侍咱。使用extern只聲明而不定義變量耐床;若一個文件中聲明定義一個全局變量int var=0; 在另一個文件中聲明extern int var; 即可訪問此變量;

static存儲類型表示變量在函數(shù)或文件內的“持久性”楔脯,也稱為靜態(tài)變量撩轰,靜態(tài)變量可分為局部靜態(tài)變量和全局靜態(tài)變量。

局部靜態(tài)變量:函數(shù)內的變量用static修飾時昧廷,將被分配在持久的存儲區(qū)域堪嫂,當函數(shù)調用結束后并不釋放,保留其值以便下次調用木柬。局部靜態(tài)變量的作用域為當前函數(shù)皆串,不能被外界函數(shù)和文件訪問;

全局靜態(tài)變量:作用域僅限于當前定義的文件眉枕,不能被其它文件使用extern關鍵字訪問恶复;

使用register關鍵字,表示變量將被放置在CPU寄存器中速挑,訪問register變量要比訪問普通變量快得多谤牡,但 register只能用于局部變量或作為函數(shù)的形式參數(shù),不能用來定義全局變量梗摇。

變量有靜態(tài)存儲和動態(tài)存儲拓哟,全局變量和靜態(tài)變量是靜態(tài)存儲的,普通的局部變量是動態(tài)存儲的伶授,auto關鍵字表示變量動態(tài)存儲断序,默認情況下流纹,局部變量均屬于auto變量。

4违诗、數(shù)據(jù)類型

數(shù)值類型分為整型和實型漱凝,整型又分為有符號型和無符號型。下圖是各種類型及字節(jié)數(shù):

注意:兩個實數(shù)比較诸迟,盡量不要使用“==”或“茸炒!=”,而要使用“>=”或“<=”之類的運算符阵苇。因為用等于或不等于時壁公,若程序精度要求較高,可能產(chǎn)生未知的錯誤绅项,也可能產(chǎn)生未知的結果紊册。通常在比較實數(shù)時要定義實數(shù)的精度,在這個精度內來確定兩數(shù)的等或不等快耿。

字符類型:C++中用單引號來確定字符變量囊陡,用雙引號來確定字符串變量,字符是以ASCII的形式存儲的掀亥,因此可以直接將整數(shù)賦值給字符變量撞反。字符存儲用一個字節(jié)。

數(shù)組類型:數(shù)組的初始化要注意一些細節(jié)搪花,如下圖遏片。定義二維數(shù)組時,可以省略第一維的長度鳍侣,但不可以省略第二維的長度丁稀。

布爾類型:布爾類型和整數(shù)類型可以相互賦值

枚舉類型:枚舉類型是用int類型實現(xiàn)的,占用4個字節(jié)倚聚,定義格式為:enum<枚舉類型名>{常量1,常量2凿可,…}惑折,定義枚舉類型時可以為各常量提供一個整數(shù)值,默認情況第一個數(shù)為0枯跑,沒有定義的值應為前一個值加1惨驶。在定義函數(shù)時將函數(shù)參數(shù)設置為枚舉類型,這樣可以限制調用函數(shù)必須提供枚舉類型中的某個常量敛助,而不能隨意輸入一個整數(shù)粗卜。

結構體類型:定義格式為struct<結構體類型名>{結構體類型變量};? 若只要定義一次結構體類型變量,可以不寫結構體類型名稱纳击。訪問結構體成員用“.”续扔,兩個結構體變量可以直接賦值攻臀。

結構體空間分配問題:涉及字節(jié)對齊問題,即編譯器在為結構體變量分配空間時纱昧,保證下一個成員的偏移量應為該成員數(shù)據(jù)類型長度的整數(shù)倍刨啸。在開發(fā)應用程序時,有時要用一個字節(jié)表示多項內容识脆,這時就要用位域來訪問一位數(shù)據(jù)设联,如下代碼所示:

共用體提供了一種機制,使多個變量(共用體中的成員)可以共享同一個內存地址灼捂,各成員內存起始地址位置相同离例,每一瞬間只有一個成員起作用,起作用的成員是最后一次存放的成員悉稠。

指針是用來存放變量地址的粘招。通過變量訪問變量是直接訪問,通過指針訪問是間接訪問偎球。注意區(qū)分指針數(shù)組和數(shù)組指針洒扎,如下圖:

用const關鍵字來修飾指針的幾種情況:

引用即是目標的一個別名,操作引用與操作實際的目標對象是相同的衰絮。引用的定義格式如下:數(shù)據(jù)類型&引用名稱=目標對象

用typedef關鍵字可以自定義數(shù)據(jù)類型袍冷,它不是創(chuàng)建一個新的數(shù)據(jù)類型,而是為已有數(shù)據(jù)類型創(chuàng)建一個新的名稱猫牡,使用自定義類型可以提高程序的移植性胡诗。語法格式為:typedef 數(shù)據(jù)類型 新名稱 。

5淌友、運算符

異或有很強大的功能煌恢,通常用異或運算來實現(xiàn)二進位的反轉,也可用來實現(xiàn)兩個數(shù)的互換震庭。

任何數(shù)與0進行按位異或運算瑰抵,結果為數(shù)據(jù)本身;

變量與自身按位異或運算器联,結果為0二汛;

按位異或運算具有交換性,a^b^c=a^c^b=b^a^c拨拓;

用異或運算來交換兩個數(shù)的例子如下:

sizeof()用于返回變量肴颊、對象或數(shù)據(jù)類型的字節(jié)長度,在32位系統(tǒng)中渣磷,指針的長度為4字節(jié)婿着。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? END,下篇繼續(xù)!>顾巍提完!

本文首發(fā)于微信公眾號:實戰(zhàn)開發(fā)者⊥嗔颍可識別下方二維碼關注實戰(zhàn)開發(fā)氯葬。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市婉陷,隨后出現(xiàn)的幾起案子帚称,更是在濱河造成了極大的恐慌,老刑警劉巖秽澳,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闯睹,死亡現(xiàn)場離奇詭異,居然都是意外死亡担神,警方通過查閱死者的電腦和手機楼吃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妄讯,“玉大人孩锡,你說我怎么就攤上這事『ッ常” “怎么了躬窜?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炕置。 經(jīng)常有香客問我荣挨,道長,這世上最難降的妖魔是什么朴摊? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任默垄,我火速辦了婚禮,結果婚禮上甚纲,老公的妹妹穿的比我還像新娘口锭。我一直安慰自己,他們只是感情好贩疙,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布讹弯。 她就那樣靜靜地躺著,像睡著了一般这溅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棒仍,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天悲靴,我揣著相機與錄音,去河邊找鬼莫其。 笑死癞尚,一個胖子當著我的面吹牛耸三,可吹牛的內容都是我干的。 我是一名探鬼主播浇揩,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼仪壮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胳徽?” 一聲冷哼從身側響起积锅,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎养盗,沒想到半個月后缚陷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡往核,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年箫爷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聂儒。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡虎锚,死狀恐怖,靈堂內的尸體忽然破棺而出衩婚,到底是詐尸還是另有隱情窜护,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布谅猾,位于F島的核電站柄慰,受9級特大地震影響,放射性物質發(fā)生泄漏税娜。R本人自食惡果不足惜坐搔,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敬矩。 院中可真熱鬧概行,春花似錦、人聲如沸弧岳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禽炬。三九已至涧卵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腹尖,已是汗流浹背柳恐。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乐设。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓讼庇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親近尚。 傳聞我的和親對象是個殘疾皇子蠕啄,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容

  • ——記邯鄲民間剪紙藝術家蔡春娥 蔡春娥歼跟,邯鄲著名剪紙藝人,1946年出生于邯鄲市邯山區(qū)羅城頭區(qū)舶沛,蔡...
    彥紫閱讀 1,123評論 0 1
  • 葉滿山門不見客嘹承,梅花開謝年年。兒童持帚掃屋前如庭。一溪環(huán)水樹叹卷,四面繞云山。 檐下燕兒忙斗嘴坪它,草邊蛩語喃喃骤竹。火爐熏暖夢綿...
    莫愁Jessie閱讀 201評論 2 3
  • 富貴榮華多的是往毡,少的是真正的望族蒙揣、世家;驕奢自傲多的是开瞭,少的是真正的宅心懒震、仁厚;矯揉放縱多的是嗤详,少的是自持个扰、自省、...
    Liangxy閱讀 252評論 0 0
  • 文 / 寫手有幸君 每個人都是一只漂流瓶葱色,在人海里旅行递宅,從一處海灘出發(fā),擱淺到另一處海灘苍狰,直到生活的浪不再將你我卷...
    寫手有幸君閱讀 570評論 2 4