真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++primer5th筆記-創(chuàng)新互聯(lián)

目錄
  • 2022年11月25日 周五 陰
    • 第一、二章:變量和基本類型
      • 基本內(nèi)置類型
        • unsigned
        • float與double
        • 'A'與"A"
        • 布爾類型轉(zhuǎn)換時(shí)
        • 初始化與賦值
        • 初始化
        • 聲明與定義
      • 復(fù)合類型
        • 引用與指針
        • 指向指針的指針
        • 指向指針的引用
  • 2022-11-26 星期六 小雨
      • const
    • 第三章 字符串、常量和數(shù)組
      • 命名空間
      • string
      • vector
      • 迭代器
  • 2022-11-27 星期日 小雨
      • 數(shù)組
        • 指針和數(shù)組
        • 多維數(shù)組
    • 第四章:表達(dá)式
      • 算術(shù)運(yùn)算符
        • 成員訪問運(yùn)算符
  • 2022-11-28 周一 陰
      • 位運(yùn)算
        • sizeof
        • 類型轉(zhuǎn)換
      • 第五章: 語句
    • 第六章:函數(shù)
        • 函數(shù)基礎(chǔ)
        • 數(shù)組形參
        • 構(gòu)造函數(shù)
    • 2022年11月30日 周三 雪
      • 第九章:順序容器
        • 迭代器

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為隆化等服務(wù)建站,隆化等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為隆化企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。2022年11月25日 周五 陰 第一、二章:變量和基本類型 基本內(nèi)置類型 unsigned

除去布爾型和擴(kuò)展的字符型外,其他整型可以劃分為帶符號(hào)的和無符號(hào)的兩種。帶符號(hào)類型可以表示正數(shù)、負(fù)數(shù)或0,無符號(hào)類型則僅能表示大于等于0的值。

如果表達(dá)式里既有帶符號(hào)類型又有無符號(hào)類型,當(dāng)這個(gè)帶符號(hào)類型取值為負(fù)時(shí)會(huì)出現(xiàn)異常,因?yàn)閹Х?hào)數(shù)會(huì)自動(dòng)轉(zhuǎn)換成無符號(hào)數(shù)。所以切勿混用帶符號(hào)與無符號(hào)類型。
unsigned u = 10, u2 = 42 ,u - u2 = 4294967264
10, 10u, 10L, 10uL, 012, 0xC:整形字面值,無符號(hào)整形字面值,長(zhǎng)整形字面值,無符號(hào)長(zhǎng)整形字面值,八進(jìn)制整形字面值,十六進(jìn)制整形字面值;
int month = 09, day = 07; 八進(jìn)制整形,八進(jìn)制中沒有9,所以會(huì)報(bào)錯(cuò)。
1024f;非法,整形字面值不可加后綴f;

float與double

float最小尺寸為6位有效值,double最小尺寸為10位有效值。

'A’與"A"

前者代表單獨(dú)的字符A
==※==后者代表了一個(gè)字符的數(shù)組,包含兩個(gè)字符:一個(gè)是字母A,另一個(gè)是空字符(‘\0’)

布爾類型轉(zhuǎn)換時(shí)

非布爾類型值賦給布爾類型值時(shí),初始值為0,結(jié)果為false。除此之外為true
布爾類型值賦給非布爾類型值時(shí),初始值為false,結(jié)果為0。初始值true,結(jié)果為1

初始化與賦值

初始化不是賦值
初始化:創(chuàng)建變量時(shí)賦予其一個(gè)初始值
賦值:把對(duì)象的當(dāng)前值擦除,用一個(gè)新的值來替代

初始化

定義于函數(shù)體內(nèi)的內(nèi)置類型的對(duì)象如果沒有初始化,則其值未定義,如果試圖拷貝或者訪問此類值將引發(fā)錯(cuò)誤。(所以建議初始化每一個(gè)內(nèi)置類型的變量)
而類的對(duì)象如果沒有顯式地初始化,則其值由類決定。(例如string類如果沒有指定初值則生成一個(gè)空串)

int i = { 3.14 }; 非法,不能執(zhí)行強(qiáng)制轉(zhuǎn)換,因?yàn)榇嬖趤G失信息的風(fēng)險(xiǎn)
int i = 3.14;合法,已強(qiáng)制轉(zhuǎn)換。

聲明與定義

聲明規(guī)定了變量的類型和名字,定義不僅這樣,還會(huì)申請(qǐng)存儲(chǔ)空間,也有可能直接賦初始值。

extern int i;	//聲明i,但無定義(如果賦初始值就是定義了)
int j; 			// 聲明并定義j

變量能被多次聲明,但只能被定義一次

含義是在編譯階段檢查類型

用戶自定義的類名一般以大寫字母開頭 Sales_item

一旦定義了引用,就無法令其再綁定到另外的對(duì)象

復(fù)合類型 引用與指針

引用是其他對(duì)象的別名。指針本身就是對(duì)象(所以它本身也有自己的地址),存放其他對(duì)象的地址
因?yàn)橐貌皇菍?duì)象,沒有實(shí)際地址,所以不能定義指向引用的指針

int *p1 = nullptr;  int *p1 = NULL; //等價(jià)于int *p1 = 0
int *p1 = 0;  //直接將p1初始化為字面常量0來生成空指針

推薦使用nullptr

pi = &ival;//pi的值被改變,此時(shí)pi里是ival的地址,pi指向了ival
*pi = 0; //ival的值被改變,指針pi并沒有改變

任何非0指針對(duì)應(yīng)的bool都是true;if(pi)
建議 int *p這種寫法

指向指針的指針
int  ival = 1024;
int *pi = &ival;
int **ppi = π

遇到復(fù)雜的指針和引用時(shí),建議從右向左閱讀

指向指針的引用
int i = 42;
int *p;
int *&r = p;// r是一個(gè)對(duì)指針p的引用

r = &i;// 因?yàn)閞是引用了一個(gè)指針,所以給r賦值&i就是令p指向i
*r = 0; // 解引用r得到i,將i的值改為0;

為什么沒有指向引用的指針?因?yàn)橐帽旧砭筒皇且粋€(gè)對(duì)象。

2022-11-26 星期六 小雨 const

const對(duì)象一旦創(chuàng)建后其值就不能再改變,所以const對(duì)象必須初始化
如果想在多個(gè)文件之間共享const對(duì)象,就必須在變量的定義之前加extern關(guān)鍵字

int errNumb = 0;
int *const curErr = &errNumb; // curErr將一直指向errNumb(此時(shí)可以通過指針修改errNumb的值)
const double pi = 3.14;
const double *const pip = π	// pip是一個(gè)指向常量對(duì)象的常量指針(都不可修改)
const int *p;	//合法,指向常量的指針可以不初始化。
onst int *const p3;	//不合法,常量指針未初始化;
第三章 字符串、常量和數(shù)組 命名空間

操作符(::)的意思是:編譯器應(yīng)從操作符左側(cè)名字所示的作用域中尋找右側(cè)那個(gè)名字
頭文件里的內(nèi)容會(huì)拷貝到所有引用它的文件中,所有應(yīng)該避免在頭文件中使用using聲明

string

在用cin讀取string對(duì)象時(shí),會(huì)自動(dòng)忽略開頭的空白,并在下一個(gè)空白處停止
如果輸入" Hello World “,那么輸出將是"Hello”
要解決這個(gè)問題可以使用getline(cin, s),當(dāng)遇見換行符時(shí)停止

string中的size()函數(shù)返回的其實(shí)是一個(gè)unsigned無符號(hào)的int值。所以,對(duì)于表達(dá)式s.size()< n來說,如果n是一個(gè)負(fù)值,則這個(gè)表達(dá)式的結(jié)果幾乎100%是true,因?yàn)樨?fù)值n會(huì)自動(dòng)轉(zhuǎn)換成一個(gè)比較大的無符號(hào)值。
所以如果一個(gè)表達(dá)式里已經(jīng)有了size()函數(shù)就不要再使用int了,這樣可以避免混用int和unsigned可能帶來的問題
C++中,字符串字面值與string是不同的類型,string s = “hello” + ","是錯(cuò)誤的。必須保證每個(gè)加號(hào)兩側(cè)的運(yùn)算對(duì)象至少有一個(gè)是string。

不管什么時(shí)候,只要對(duì)string對(duì)象使用了下標(biāo),都要確認(rèn)這個(gè)下標(biāo)處有值
小tips:

for (decltype(s.size()) index=0;  index != s.size(); index++ ) {}

題目:

string s;
cout<< s[0]<< endl;
//合法,定義后就占用一個(gè)字節(jié),包含’\0’。
vector

vector中只能存放同一種類型對(duì)象
vector不能存放引用,因?yàn)橐貌皇菍?duì)象

vectorv1(10, 1);	// 有10個(gè)元素,每個(gè)值都是1
vectorv1{10, 1};	// 有2個(gè)元素,分別是10,1
vectorsvec(10, "null");	//正確,創(chuàng)建了一個(gè)包含10個(gè)元素為“null”的vector對(duì)象。

范圍for語句體內(nèi)不應(yīng)改變其所遍歷序列的大小

只能對(duì)已確認(rèn)存在的元素執(zhí)行下標(biāo)操作(否則常常會(huì)出現(xiàn)緩沖區(qū)溢出buffer overflow)

迭代器

begin成員指向容器中第一個(gè)元素,而end返回容器尾元素的后一個(gè)元素(即不存在的元素)
當(dāng)容器為空時(shí),begin和end返回的是同一個(gè)迭代器,即尾后迭代器

2022-11-27 星期日 小雨 數(shù)組

要理解數(shù)組聲明的含義,最好是從數(shù)組的名字開始,由內(nèi)向外依次閱讀
int ia[txt_size()]; 當(dāng)txt_size()是constexpr時(shí)正確;否則錯(cuò)誤

string sa[10];
int ia[10];
int main() {string sa2[10];
    int ia2[10];
}

sa:空字符串;
ia:0;
sa2:空字符串;
ia2:不確定值。

指針和數(shù)組
string nums[] = {"one", "two", "three"};
string *p = &nums[0];
string *p2 = nums;	//等價(jià)于 p2 = &nums[0]
// 	通常情況下,使用數(shù)組類型的對(duì)象其實(shí)是使用一個(gè)指向該數(shù)組首元素的指針

使用數(shù)組類型的對(duì)象,其實(shí)就是使用一個(gè)指向該數(shù)組首元素的指針

int ia[] = {0, 1, 2, 3, 4};
auto ia2(ia);	// ia2是一個(gè)整型指針,指向ia的第一個(gè)元素
但是如果使用decltype時(shí)轉(zhuǎn)換不會(huì)發(fā)生、
decltype(ia) ia3 = {0, 1, 2, 3, 4};	//此時(shí)ia3是一個(gè)含有5個(gè)整數(shù)的數(shù)組

要特別注意:尾后指針不能執(zhí)行解引用和遞增操作

C++程序應(yīng)該盡量使用vector和迭代器,而避免使用內(nèi)置數(shù)組和指針
應(yīng)該盡量使用string,而避免使用C風(fēng)格的基于數(shù)組的字符串

多維數(shù)組

嚴(yán)格地說,C++中并沒有多維數(shù)組,只有數(shù)組的數(shù)組。
int ia[3][4]; //大小為3的數(shù)組,每個(gè)元素是含有4個(gè)整數(shù)的數(shù)組
使用for循環(huán)多維數(shù)組時(shí),除最內(nèi)層循環(huán)外,其他循環(huán)的控制變量應(yīng)該為引用類型(否則可能會(huì)出現(xiàn)轉(zhuǎn)換為指向數(shù)組首元素指針的情況)

int ia[3][4];	//大小為3的數(shù)組,其中每個(gè)元素都是含有4個(gè)整數(shù)的數(shù)組
int (*p)[4] = ia;	//	p指向含有4個(gè)整數(shù)的數(shù)組
p = &ia[2];	// p指向ia的尾元素

int *ip[4];	//	整型指針的數(shù)組
int (*ip)[4];	//指向含有4個(gè)整數(shù)的數(shù)組
第四章:表達(dá)式 算術(shù)運(yùn)算符

當(dāng)優(yōu)先級(jí)相同時(shí),按照從左向右的順序組合

bool b = true;
bool c = -b;	// c依舊是true;因?yàn)閎參與運(yùn)算后值被轉(zhuǎn)為1,而-1不等于0,所以轉(zhuǎn)為bool后為true

參與取模運(yùn)算%的運(yùn)算對(duì)象必須為整數(shù)類型

const char *cp = "Hello World";
if (cp && *cp)
當(dāng)指針cp不為空時(shí),才判斷解引用cp的值。
我們知道,cp不為空,&&左側(cè)為true;*cp為’H’,右側(cè)也為真,所以if語句為真。

避免使用后置遞增/遞減,因?yàn)楹笾冒姹拘枰獙⒃贾荡鎯?chǔ)起來以便于返回這個(gè)未修改的內(nèi)容

成員訪問運(yùn)算符

解引用運(yùn)算符的優(yōu)先級(jí)低于點(diǎn)運(yùn)算符

ptr->men 等價(jià)于 (*ptr).men;
2022-11-28 周一 陰 位運(yùn)算

強(qiáng)烈建議僅將位運(yùn)算符用于處理無符號(hào)類型
左移運(yùn)算符<< 在右側(cè)插入值為0的二進(jìn)制位
右移運(yùn)算符 >>行為取決于左側(cè)運(yùn)算對(duì)象的類型
如果是無符號(hào)型,在左側(cè)插入值為0的二進(jìn)制位
如果是帶符號(hào)型,在左側(cè)插入值為0的二進(jìn)制位或插入符號(hào)位的副本
位求反運(yùn)算符 `:0置1,1置0
位異或運(yùn)算符^:兩個(gè)中只有1個(gè)1則為1,否則為0

cout<< 10< 42;	//錯(cuò)誤,試圖比較cout和42!
sizeof
sizeof(obj);	//這種情況返回存儲(chǔ)obj所占空間的大小
sizeof obj;		//這種情況返回obj類型 所占空間的大小
int x[10];   int *p = x;
cout<< sizeof(x)/sizeof(*x)<< endl;	// 40/4=10,數(shù)組所占的字節(jié)數(shù)/數(shù)組類型int所占的字節(jié)數(shù),就是數(shù)組的個(gè)數(shù);
cout<< sizeof(p)/sizeof(*p)<< endl;	// 4/4=1,指針?biāo)嫉淖止?jié)數(shù)/int所占的字節(jié)數(shù)。
類型轉(zhuǎn)換
int val = 3.14 + 3;	//	3會(huì)轉(zhuǎn)換為double,然后執(zhí)行浮點(diǎn)數(shù)加法運(yùn)算,再將double轉(zhuǎn)為int賦予val
3.1415L + 'a';	// 'a'提升為int,然后int轉(zhuǎn)為long double
cval + fval;	// cval提升為int,然后int轉(zhuǎn)為float
fval = ui - ival * 1.0;	//	ival->double,ui->double,double->float;

強(qiáng)烈建議避免強(qiáng)制類型轉(zhuǎn)換

第五章: 語句

在switch中,哪怕default沒用,也最好加上
魯棒是Robust的音譯,也就是健壯和強(qiáng)壯的意思。它也是在異常和危險(xiǎn)情況下系統(tǒng)生存的能力。

第六章:函數(shù) 函數(shù)基礎(chǔ)

局部靜態(tài)對(duì)象:即使其所在的函數(shù)執(zhí)行結(jié)束對(duì)它也沒有影響,它直到程序終止才被銷毀。
在C++中,建議使用引用類型的形參代替指針類型的形參。而且,當(dāng)函數(shù)無需改變引用形參的值時(shí),最好將形參聲明為常量引用

const int &r = 42;	//正確
int &r = 42;	// 錯(cuò)誤,不能用字面值初始化一個(gè)非常量引用
char *argv[];等同于 char **argv;

不要返回局部對(duì)象的引用或指針
如果main函數(shù)結(jié)尾處沒有return語句,編譯器將隱式地插入一條返回0的return語句
重載:名字相同,形參列表不同

數(shù)組形參
void print(const int*);
void print(const int[]);
void print(const int[10]);
// 這三者等價(jià),而[10]只是表示我們期望數(shù)組含有多少元素,實(shí)際不一定

通常應(yīng)該在函數(shù)聲明中指定默認(rèn)實(shí)參,并將該聲明放在頭文件中

構(gòu)造函數(shù)

無論何時(shí),只要類的對(duì)象被創(chuàng)建,就會(huì)執(zhí)行構(gòu)造函數(shù)
struct 于class的區(qū)別

2022年11月30日 周三 雪 第九章:順序容器
vector:	可變大小數(shù)組。訪問快,在尾部之外位置插入/刪除元素慢
deque:雙端隊(duì)列。訪問快,在頭尾位置插入/刪除元素快
list: 雙向鏈表。只支持雙向的順序訪問。任何位置插入/刪除都很快
forward_list: 單向鏈表。只能單向順序訪問。在任何位置插入/刪除都很快
array:固定大小數(shù)組。訪問快,不能添加/刪除元素
string:與vector基本一樣,但只能保存字符。訪問快,在尾部插入/刪除快
通常情況下,使用vector是最好的選擇
如果要求隨機(jī)訪問元素:vector或deque
如果要求在中間插入/刪除元素:list或forward_list
如果要求在頭尾插入/刪除元素且不在中間位置插入/刪除元素:deque
迭代器

迭代器范圍:左閉右開
向一個(gè)vector、string或deque插入元素會(huì)使所有指向容器的迭代器、引用和指針失效
調(diào)用swap后,元素本身并未交換,也就意味著指向容器的迭代器、引用和指針都依然有效(除string外)
每次改變?nèi)萜鞯牟僮髦蠖紤?yīng)該重新定位迭代器,特別是vector、string和deque;

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:C++primer5th筆記-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/cdjsic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部