1.計(jì)算機(jī)和C++入門
1.1計(jì)算機(jī)系統(tǒng)
計(jì)算機(jī)要遵循的一系列指令統(tǒng)稱為程序
計(jì)算機(jī)使用的各種程序稱為軟件
組裝一臺(tái)計(jì)算機(jī)所需的物理設(shè)備稱為硬件
硬件
輸入設(shè)備:使用戶將信息發(fā)送給計(jì)算機(jī)的設(shè)備揣非,主要是鍵盤和鼠標(biāo)
輸出設(shè)備:計(jì)算機(jī)將信息發(fā)送給用戶的設(shè)備抡医,常見的是顯示器,有時(shí)將鍵盤和顯示器統(tǒng)稱 終端
存儲(chǔ)器:程序儲(chǔ)存在儲(chǔ)存器中早敬,分為主存儲(chǔ)器和輔助存儲(chǔ)器忌傻,主存儲(chǔ)器相當(dāng)于一個(gè)很長的編號(hào)位置列表,這些位置列表就是儲(chǔ)存位置 或 內(nèi)存位置
CPU:中央處理單元
軟件
操作系統(tǒng)為計(jì)算機(jī)必須完成的不同人物分配計(jì)算機(jī)資源搞监,操作系統(tǒng)實(shí)際是一個(gè)程序水孩,或者是多個(gè)相互協(xié)作的程序。程序是計(jì)算機(jī)需要遵照?qǐng)?zhí)行的一系列指令琐驴。 數(shù)據(jù)是向一個(gè)程序提供的輸入俘种。
字節(jié)和位
主內(nèi)存被劃分稱為字節(jié)的多個(gè)編號(hào)位置,一個(gè)字節(jié)的編號(hào)位置就是該字節(jié)的地址绝淡。每個(gè)字節(jié)都代表一個(gè)能容納8個(gè)二進(jìn)制位的內(nèi)存位置宙刘。
主存儲(chǔ)器
主存儲(chǔ)器簡稱內(nèi)存,也可以簡稱為RAM牢酵,也就是隨機(jī)存取存儲(chǔ)器
輔助存儲(chǔ)器
輔助存儲(chǔ)器能在計(jì)算機(jī)使用之后(和之前)持久性地保存數(shù)據(jù)悬包。
1.2編程和問題求解
算法
用于解決問題的一系列準(zhǔn)確的指令稱為算法,通常也可以稱為方法馍乙、指令布近、過程和例程等。
1.3C++入門
面向?qū)ο蟪绦蛟O(shè)計(jì)
C++完全支持面對(duì)對(duì)象的程序設(shè)計(jì)潘拨,包括面對(duì)對(duì)象開發(fā)的四大特性:封裝吊输、抽象、繼承铁追、多態(tài)
C++的起源
BCPLC語言->B語言->C語言->C++
標(biāo)準(zhǔn)庫
標(biāo)準(zhǔn)的C++有三個(gè)重要部分組成:
- 核心語言季蚂,提供了所有構(gòu)件塊,包括變量、數(shù)據(jù)類型和常量等等
- C++標(biāo)準(zhǔn)庫扭屁,提供了大量的函數(shù)算谈,用于操作文件、字符串等等
- 標(biāo)準(zhǔn)模板庫(STL)料滥,提供了大量的方法然眼,用于操作數(shù)據(jù)結(jié)構(gòu)等
C++的開發(fā)工具
記事本(Notepad++)+命令行
Visual C++ 6.0
VS2015
Code::Blocks
其他開發(fā)工具
DEV C++、CLion葵腹、C-Free高每、Xcode、C4droid
一個(gè)典型的C++代碼
#include <iostream>
using namespace std;
int main()
{
cout <<"hello World!"<<;
return 0;
}
以#開頭的語句成為預(yù)處理命令践宴,告訴編譯器到哪里尋找與程序中使用的特定項(xiàng)目有關(guān)的信息鲸匿、#include語句不是必須的,但如果一旦程序中有該語句阻肩,就必須把它放到程序的開始處
將iostream文件的內(nèi)容添加到程序中带欢,iostream中包含了有關(guān)輸入輸出語句的函數(shù)
using namespeace std為使用命名空間,std是standard(標(biāo)準(zhǔn)的意思)的縮寫烤惊,std::cout或std::endl代表從屬的關(guān)系
所謂命名空間(namespeace)是一種將程序庫名稱封裝起來的方法乔煞。通過這種方法,可以避免和應(yīng)用程序發(fā)生命名沖突的問題(所謂命名沖突時(shí)指程序內(nèi)兩個(gè)不同的實(shí)體具有相同名稱柒室,導(dǎo)致程序無法區(qū)分兩者渡贾,命名沖突發(fā)生時(shí),程序必須等到命名沖突獲得決議之后才得以繼續(xù)執(zhí)行)伦泥。命名空間像是在沖多名稱的課件范圍之間暑期的一道圍墻剥啤。
<<符號(hào)表示把字符串"Hello World!"發(fā)送給cout打印锦溪。endl是控制符不脯,(end line的縮寫)表示重起一行(\n)。
與其說是程序顯示了一條信息刻诊,不如說它s將一個(gè)字符插入到了輸出流中
防楷。從概念上看,輸出是一個(gè)流则涯,可以理解成從程序流出的一系列字符复局。cout右邊<<符號(hào)是插入運(yùn)算符,可以將右側(cè)信息插入流中頭文件命名約定
頭文件類型 | 約定 | 示例 | 說明 |
---|---|---|---|
C舊式風(fēng)格 | 以.h結(jié)尾 | stdio.h/math.h | C粟判、C++通用 |
C++舊式風(fēng)格 | 以.h結(jié)尾 | iostream.h | C++可以使用 |
C++新式風(fēng)格 | 沒有擴(kuò)展名 | iostream | C++使用亿昏,需要使用namespeace |
轉(zhuǎn)換后的C | 加上前綴c,沒有擴(kuò)展名 | cmath/cytype等 | C++使用 |
endl 和 \n的 區(qū)別
1.\n為純粹的換行
2.endl為換行和確保程序立刻輸出(清空緩沖區(qū))cin:輸入語句档礁,讀作“see-in”,用于輸入
cout:輸出語句角钩,讀作“see-out”,用于輸出
編程提示
<<和>>表示數(shù)據(jù)移動(dòng)的方向
cin >> number;
cout << number;
C++編碼規(guī)范
1.每條語句占一行
2.每個(gè)函數(shù)都有一個(gè)開始和結(jié)束花括號(hào),花括號(hào)各占一行
3.函數(shù)中的語句相對(duì)于花括號(hào)進(jìn)行縮進(jìn)
4.與函數(shù)名稱相關(guān)的小括號(hào)周圍沒有空白
編譯和執(zhí)行過程
- 編譯(預(yù)處理->編譯->目標(biāo)文件)
形成可執(zhí)行代碼/文件递礼〔蚁眨可執(zhí)行代碼是編譯器的輸出結(jié)果,文件擴(kuò)展名為“.o”或“.obj” - 鏈接
將目標(biāo)代碼跟C++函數(shù)庫相連接脊髓,并將源程序的庫代碼與目標(biāo)代碼合并辫愉,形成最終可執(zhí)行的二進(jìn)制代碼(可執(zhí)行程序) - 執(zhí)行
在特定的機(jī)器環(huán)境下運(yùn)行C++應(yīng)用程序
各種程序錯(cuò)誤
語法錯(cuò)誤:編譯器能夠捕捉特定類型的錯(cuò)誤,并在檢測到錯(cuò)誤后輸出一條錯(cuò)誤信息将硝,表示程序違反了編譯語言的語法規(guī)則恭朗,比如遺漏分號(hào)。
警告信息:表明代碼從技術(shù)上說沒有違反語法規(guī)則依疼,但出乎尋常冀墨,所以它可能是個(gè)錯(cuò)誤,編譯器相當(dāng)于在說:“你真的是這個(gè)意思嗎?”
邏輯錯(cuò)誤:基礎(chǔ)語法錯(cuò)誤或者將所發(fā)翻譯成C++語言的錯(cuò)誤涛贯,如將*錯(cuò)誤的寫成了+