黑馬程序員匠心之作|C++教程從0到1入門(mén)編程,學(xué)習(xí)編程不再難

c++初識(shí)
框架:
#include<iostream>
using namespace std;
int main()
{
?
system(“pause”);
?
return 0;
}
?
?
注釋
作用:在代碼中加一些說(shuō)明和解釋?zhuān)奖阕约夯蚱渌绦騿T閱讀代碼
兩種格式
1.?單行注釋?zhuān)?/描述信息
????????通常在一行代碼的上方,或一條語(yǔ)句的末尾,對(duì)改行代碼說(shuō)明
2.?多行注釋?zhuān)?*描述信息*/
通常在一段代碼的上方,對(duì)該段代碼做整體說(shuō)明
?
?
?
變量
作用:給一段指定的內(nèi)存空間起名,方便操作這段內(nèi)存
語(yǔ)法:數(shù)據(jù)類(lèi)型 變量名 = 初始值
?
?
常量
作用: 用于記錄程序中不可更改的數(shù)據(jù)
C++定義常量的兩種方式
1.?#difine宏常量:#define 常量名 常量
通常在文件上方(main)定義,表示一個(gè)常量
2.?const修飾的變量:const 數(shù)據(jù)類(lèi)型 常量名 = 變量值
通常在變量定義前加關(guān)鍵字const,修飾該變量為常量,不可修改
?
?
?
?
?
?
?
關(guān)鍵字
作用:關(guān)鍵字是C++中預(yù)先保留的單詞(標(biāo)識(shí)符)
在定義變量或常量時(shí),不要用關(guān)鍵字
?
?
?
標(biāo)識(shí)符命名規(guī)則
作用:C++規(guī)定給標(biāo)識(shí)符(變量、常量)命名時(shí),有一套自己的規(guī)則
????標(biāo)識(shí)符不能是關(guān)鍵字
????標(biāo)識(shí)符只能由字母、數(shù)字、下劃線(xiàn)組成
????第一個(gè)字符必須為字母或下劃線(xiàn)
????標(biāo)識(shí)符中字母區(qū)分大小寫(xiě)
?
?
數(shù)據(jù)類(lèi)型
C++規(guī)定在創(chuàng)建一個(gè)變量或常量時(shí),必須要指定出相應(yīng)的數(shù)據(jù)類(lèi)型,否則無(wú)法給變量分配內(nèi)存
?
整型
作用:整型變量表示的是整數(shù)類(lèi)型的數(shù)據(jù)
C++中能表示整型的類(lèi)型有以下集中方式,區(qū)別在于所占內(nèi)存空間不同
?
short(-32768,32767)
?
?
?
?
?
sizeof關(guān)鍵字
作用:利用sizeof關(guān)鍵字可以統(tǒng)計(jì)數(shù)據(jù)類(lèi)型所占內(nèi)存大小
語(yǔ)法:sizeof(關(guān)鍵字/變量)
?
?
實(shí)型(浮點(diǎn)型)
作用:用于表示小數(shù)
浮點(diǎn)型變量分為兩種:
?
?
?
字符型
作用:字符型變量用于顯示單個(gè)字符
語(yǔ)法:char ch = ‘a(chǎn)’
?
注意1:在顯示字符型變量時(shí),用單引號(hào)將字符括起來(lái),不要用雙引號(hào)
注意2:?jiǎn)我?hào)內(nèi)只能有一個(gè)字符
?
C和C++中字符型變量只占用1個(gè)字節(jié)
字符型變量并不是把字符本身放到內(nèi)存中存儲(chǔ),而是將對(duì)應(yīng)的ASCII編碼放入存儲(chǔ)單元中
?
?
轉(zhuǎn)義字符
作用:用于表示一些不能顯示傳來(lái)的ASCII字符
現(xiàn)階段常用:\n??\\??\t
\n:換行(LF),將當(dāng)前位置移到下一行開(kāi)頭
舉例cout<<”hello world\n”; =
????cout<<”helloworld”endl
\\:代表一個(gè)反斜線(xiàn)字符“\”
\t:水平制表(HT)(跳到下一個(gè)TAB位置(即此行第九格)(可用來(lái)對(duì)齊)
?
?
字符串型
作用:用于表示一串字符
兩種風(fēng)格:
1.?C語(yǔ)言風(fēng)格字符串:char 變量名[] = “字符串值”
2.?C++風(fēng)格字符串 string 變量名 = “字符串值”
?
?
?
布爾類(lèi)型 bool
作用:布爾數(shù)據(jù)類(lèi)型代表真或假的值
bool類(lèi)型只有兩個(gè)值:
true -- 真(本質(zhì)是1)
false -- 假(本質(zhì)是0)
bool類(lèi)型占1個(gè)字節(jié)大小
?????
?
數(shù)據(jù)的輸入
作用:用于從鍵盤(pán)獲取數(shù)據(jù)
關(guān)鍵字:cin
語(yǔ)法:cin>>變量
?
?
?
?
?
?
?
?
?
?
?
運(yùn)算符
作用:用于執(zhí)行代碼的運(yùn)算
?
?
算術(shù)運(yùn)算符
作用:用于處理四則運(yùn)算
算數(shù)運(yùn)算符包括以下符號(hào)
?
除:兩個(gè)整型變量相除,結(jié)果為整數(shù),去掉小數(shù)部分
取模(取余):得到余數(shù)(僅可整型變量)
舉例:10 % 3 = 1
前置:先讓變量+1,然后再進(jìn)行表達(dá)式運(yùn)算
后置:先進(jìn)行表達(dá)式運(yùn)算,然后再讓變量+1
a++和++a同表示為a+1
賦值運(yùn)算符
作用:用于將表達(dá)式的值付給變量
?
?
?
比較運(yùn)算符
作用:用于表達(dá)式的比較,并返回一個(gè)真值或假值
?
舉例:
int a = 1;
int b = 2;
cout<<a!=b<<endl;
???????以上輸出結(jié)果為1
?
邏輯運(yùn)算符
作用:用于根據(jù)表達(dá)式的值返回真值或假值
?
C++中,除了0以外均為真
&&和||在運(yùn)算時(shí)應(yīng)將值和符號(hào)一同用括號(hào)括起
舉例:
int a = 0;
int b = 1;
cout<<(a&&b)<<endl;
????以上輸出結(jié)果為0
?
?
嵌套循環(huán)
作用:在循環(huán)體中再嵌套一層循環(huán),解決一些實(shí)際問(wèn)題
?
?
?
?
?
?
程序流程結(jié)構(gòu)
C/C++支持最基本的三種程序運(yùn)行結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
順序結(jié)構(gòu):程序按順序執(zhí)行,不發(fā)生跳轉(zhuǎn)
選擇結(jié)構(gòu):依據(jù)條件是否滿(mǎn)足,有選擇地執(zhí)行相應(yīng)功能
循環(huán)結(jié)構(gòu):依據(jù)條件是否滿(mǎn)足,循環(huán)多次執(zhí)行某段代碼
?
選擇結(jié)構(gòu)
if語(yǔ)句
作用:執(zhí)行滿(mǎn)足條件的語(yǔ)句
if語(yǔ)句的三種形式
單行格式if語(yǔ)句
多行格式if語(yǔ)句
多條件的if語(yǔ)句
?
1.?單行格式if語(yǔ)句:if(條件){條件滿(mǎn)足執(zhí)行的語(yǔ)句;}
多行格式if語(yǔ)句:if(條件){條件滿(mǎn)足執(zhí)行的語(yǔ)句}else{條件不滿(mǎn)足執(zhí)行的語(yǔ)句}
2.?多條件的If語(yǔ)句:if(條件1){條件1滿(mǎn)足執(zhí)行的語(yǔ)句}else if(條件2){條件2滿(mǎn)足執(zhí)行的語(yǔ)句}...else{都不滿(mǎn)足執(zhí)行的語(yǔ)句}
?
嵌套if語(yǔ)句:在if語(yǔ)句中,達(dá)到更精確的判斷:if(){if(){}}
三目運(yùn)算符
作用:通過(guò)三目運(yùn)算符實(shí)現(xiàn)簡(jiǎn)單的判斷
語(yǔ)法:表達(dá)式1?表達(dá)式2:表達(dá)式3
解釋?zhuān)?/p>
如果表達(dá)式1為真,則輸出表達(dá)式2
如果表達(dá)式1為假,則輸出表達(dá)式3
可看作if語(yǔ)句的簡(jiǎn)化版
?
?
switch語(yǔ)句
作用:執(zhí)行多條件分支
語(yǔ)法:
switch(表達(dá)式)
{
case 結(jié)果1:執(zhí)行語(yǔ)句;
break;
case 結(jié)果2:執(zhí)行語(yǔ)句;
break;
...
default:執(zhí)行語(yǔ)句;
break;
?
}(其中case結(jié)果應(yīng)為常量)
?
switch對(duì)比if
缺點(diǎn):判斷時(shí)只能是整型或字符型,不可以是區(qū)間
優(yōu)點(diǎn):結(jié)構(gòu)清晰,執(zhí)行效率高
?
?
循環(huán)結(jié)構(gòu)
?
while循環(huán)語(yǔ)句
作用:滿(mǎn)足循環(huán)條件,執(zhí)行循環(huán)語(yǔ)句
語(yǔ)法:while(循環(huán)條件){循環(huán)語(yǔ)句}
解釋?zhuān)褐灰h(huán)條件的結(jié)果為真,就執(zhí)行循環(huán)語(yǔ)句
?
?
do...while循環(huán)語(yǔ)句
作用:滿(mǎn)足循環(huán)條件,執(zhí)行循環(huán)語(yǔ)句
語(yǔ)法:do{循環(huán)語(yǔ)句}while(循環(huán)條件);
注意:與while的區(qū)別在于do...while會(huì)先執(zhí)行一次循環(huán)語(yǔ)句,再判斷循環(huán)條件
?
?
?
for循環(huán)語(yǔ)句
作用:滿(mǎn)足循環(huán)條件,執(zhí)行循環(huán)語(yǔ)句
語(yǔ)法:for(起始表達(dá)式;條件表達(dá)式;末尾循環(huán)體){循環(huán)語(yǔ)句;}
解釋?zhuān)浩鹗急磉_(dá)式-條件表達(dá)式-循環(huán)語(yǔ)句-末尾循環(huán)體-條件表達(dá)式-循環(huán)語(yǔ)句-...-條件表達(dá)式-末尾循環(huán)體-結(jié)
?
?
?
跳轉(zhuǎn)語(yǔ)句
?
break語(yǔ)句
作用:用于跳出選擇結(jié)構(gòu)或者循環(huán)結(jié)構(gòu)
用法:break;
break使用的時(shí)機(jī):
出現(xiàn)在switch條件語(yǔ)句中,作用是種植case并跳出switch
出現(xiàn)在循環(huán)語(yǔ)句中,組件哦勇士跳出當(dāng)前的循環(huán)語(yǔ)句
出現(xiàn)在嵌套循環(huán)中,跳出最近的內(nèi)層循環(huán)語(yǔ)句
?
?
?
continue語(yǔ)句
作用:在循環(huán)語(yǔ)句中,跳過(guò)本次循環(huán)中余下尚未執(zhí)行的語(yǔ)句,繼續(xù)執(zhí)行下一次循環(huán)
用法:continue;
?
?
goto語(yǔ)句
作用:可以無(wú)條件跳轉(zhuǎn)語(yǔ)句
語(yǔ)法:goto 標(biāo)記;
解釋?zhuān)喝绻麡?biāo)記的名稱(chēng)存在,執(zhí)行到goto語(yǔ)句時(shí),會(huì)跳轉(zhuǎn)到標(biāo)記的位置
舉例:
1.xxxxx
?
2.xxxxx
goto FLAG;
3.xxxxx
?
4.xxxxx
FLAG:
5.?xxxxx
?
?
數(shù)組
概述:
所謂數(shù)組就是一個(gè)集合
特點(diǎn)1:數(shù)組中的每個(gè)數(shù)據(jù)元素都是相同的數(shù)據(jù)類(lèi)型
特點(diǎn)2:數(shù)組是由連續(xù)的內(nèi)存位置組成的
?
?
一維數(shù)組
一維數(shù)組定義方式
一維數(shù)組定義的三種方式:
1.?數(shù)據(jù)類(lèi)型 數(shù)據(jù)名 [數(shù)組長(zhǎng)度];
2.?數(shù)據(jù)類(lèi)型 數(shù)據(jù)名 [數(shù)組長(zhǎng)度] = {值1,值2,...};
3.?數(shù)據(jù)類(lèi)型 數(shù)組名[] = {值1,值2...};
注意:
2中如果初始化數(shù)據(jù)時(shí)沒(méi)有全部填寫(xiě),會(huì)用0填補(bǔ)
?
?
?
?
?
?
一維數(shù)組數(shù)組名
一維數(shù)組名稱(chēng)的用途:
1.?可以統(tǒng)計(jì)整個(gè)數(shù)組在內(nèi)存中的長(zhǎng)度
2.?可以獲取數(shù)組在內(nèi)存中的首地址
數(shù)組首地址:(int)數(shù)組名
數(shù)組第n個(gè)元素的地址:(int)&數(shù)組名[n]
數(shù)組名是常量,不可以進(jìn)行賦值、修改
?
?
冒泡排序
作用:最常用的排序算法,對(duì)數(shù)組內(nèi)元素進(jìn)行排序
1.比較相鄰元素,如果第一個(gè)比第二個(gè)大及交換他們兩個(gè)
??2.對(duì)每一對(duì)相鄰元素做同樣的工作,執(zhí)行完畢后,
??找到找到第一個(gè)最大值
3.?重復(fù)以上的步驟,每次比較次數(shù)-1,直到不需要
比較
?
?
交換代碼:
int temp = a;
a = b;
b = temp;
二維數(shù)組
二維數(shù)組在一維數(shù)組上多加一個(gè)維度
?
?
二維數(shù)組定義方式
1.?數(shù)據(jù)類(lèi)型 數(shù)組名[行數(shù)][列數(shù)];
2.?數(shù)據(jù)類(lèi)型 數(shù)組名[行數(shù)][列數(shù)]={{數(shù)據(jù)1,數(shù)據(jù)2},{數(shù)據(jù)3,數(shù)據(jù)4}};
3.?數(shù)據(jù)類(lèi)型 數(shù)組名[行數(shù)][列數(shù)]={數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3,數(shù)據(jù)4};
4.?數(shù)據(jù)類(lèi)型 數(shù)組名[ ][列數(shù)]={數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3,數(shù)據(jù)4};
建議:以上四種方式,利用第二種更加直觀,提高代碼的可讀性
?
?
二維數(shù)組數(shù)組名
查看數(shù)組所占內(nèi)存空間
獲取二維數(shù)組首地址