2017年6月20日
- 指針形參
- 指針形參的行為和其它非引用類型一樣→拷貝的是指針的值击困,拷貝后是兩個(gè)不同的指針→但是指向相同的值→可以通過(guò)指針形參修改它所指對(duì)象的值
- C程序中由于沒(méi)有引用,所以常使用指針類型的形參訪問(wèn)函數(shù)外部的對(duì)象叔营。
- C++中,建議使用引用類型的形參代替指針
- 指針
- 指針本身是一個(gè)對(duì)象(而引用并非對(duì)象)
- 允許對(duì)指針賦值和拷貝
- 指針無(wú)須在定義時(shí)賦初值
- 在塊作用域定義的指針如果沒(méi)有被初始化碰纬,也將擁有一個(gè)不確定的值
- free/malloc和new/delete
- string搜索操作
- s.find(args)呐萌,查找s中args第一次出現(xiàn)的位置
- s.rfind(args)渗磅,查找s中args最后一次出現(xiàn)的位置
- 修改string的操作
- s.insert(pos,args)
- s.erase(pos,len)
- s.assign(args)
- s.append(args)
-
s.replace(range,args)
修改string的操作
2017年6月21日
- 遞歸和迭代
- 迭代使用的是循環(huán)結(jié)構(gòu)犯眠,遞歸使用的是選擇結(jié)構(gòu)
- 遞歸能使得程序的結(jié)構(gòu)更清晰按灶、更簡(jiǎn)潔、更容易讓人理解
- 遞歸調(diào)用會(huì)建立函數(shù)的副本筐咧,耗費(fèi)大量的時(shí)間和內(nèi)存鸯旁,迭代則不需要
- 在前行階段,對(duì)于每一層遞歸,函數(shù)的局部變量羡亩、參數(shù)值以及返回地址都被壓入棧中;在退回階段危融,位于棧頂?shù)木植孔兞课访?shù)值和返回地址都被彈出。
2017年6月22日
-
類內(nèi)數(shù)組的初始化
當(dāng)類的數(shù)據(jù)成員為數(shù)組時(shí)吉殃,可以在初始化列表中初始化辞居,也可以在構(gòu)造函數(shù)函數(shù)體中用循環(huán)初始化。
類內(nèi)數(shù)組初始化.png - 只能對(duì)空指針或者是new分配的指針使用delete蛋勺,否則是未定義的行為瓦灶。
2017年6月26日
- pdf書(shū)簽?zāi)J(rèn)是折疊或者展開(kāi)
http://www.newasp.net/tech/66745.html -
順序容器的定義和初始化
cpp primer p299 - 值初始化/默認(rèn)初始化/
2017年7月1日
-
容器的定義和初始化
對(duì)于C c1(c2)這種初始化方式,除array外抱完,c1 c2的大小可以不同贼陶。元素個(gè)數(shù)不是vector等容器類型的一部分。
但對(duì)于數(shù)組和array來(lái)說(shuō)巧娱,元素個(gè)數(shù)就是類型的一部分碉怔。
2017年7月3日
- 泛型算法--reverse
void reverse (BidirectionalIterator first, BidirectionalIterator last);
復(fù)雜度:Linear in half the distance between first and last: Swaps elements.
- 泛型算法-sort
- 泛型算法-count
- 用法
template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type count (InputIterator first, InputIterator last, const T& val);
- Returns the number of elements in the range [first,last) that compare equal to val.
- The function uses operator== to compare the individual elements to val.
- 復(fù)雜度:Linear in the distance between first and last: Compares once each element.
- eg
int a = count(str.begin(),str.end(),'a');
2017年7月5日
- 轉(zhuǎn)義字符
總結(jié):http://www.cnblogs.com/emanlee/archive/2010/05/14/1735274.html
\ddd 三位八進(jìn)制 eg. \101 八進(jìn)制數(shù)101,等于十進(jìn)制數(shù)的65禁添,而65是A的ASCII碼撮胧,所以如果按字符打印,會(huì)打印對(duì)應(yīng)的字符老翘,也就是打印字符A
\xhh 二位16進(jìn)制 - 算術(shù)表達(dá)式內(nèi)數(shù)據(jù)類型不同
5/6.0為實(shí)型芹啥,5 為int,6.0為float類型(或double)铺峭,表達(dá)式自動(dòng)把5轉(zhuǎn)化為較大的 float類型(或double) 運(yùn)算墓怀,結(jié)果為 float類型(或double) -
運(yùn)算符
取地址運(yùn)算符 & 解引用運(yùn)算符*
image.png
image.png -
對(duì)數(shù)組取地址
輸出為2,5
image.png - 虛函數(shù)、純虛函數(shù)
- 對(duì)常量的引用
2017年7月8日
- 32位機(jī)器上逛薇,一個(gè)指針占用4字節(jié)捺疼;64位機(jī)器上,一個(gè)指針占用8字節(jié)
- const成員函數(shù)
2017年7月11日
- 靜態(tài)成員和靜態(tài)成員函數(shù)的總結(jié)
https://www.nowcoder.com/test/question/done?tid=9092861&qid=56200#summary
image.png - ??
int main(int argc ,char** argv)
2017年7月12日
- 順序容器中迭代器失效的情況
http://www.reibang.com/p/6b2575ab1b8c -
如下程序永罚,輸出A啤呼,但是會(huì)出現(xiàn)異常。A中f沒(méi)有聲明為虛函數(shù)呢袱,所以不會(huì)被覆蓋官扣。另外最后的delete a有問(wèn)題,因?yàn)閚ew構(gòu)造的是一個(gè)B類型的對(duì)象羞福,delete a僅刪除了屬于A的部分惕蹄。
image.png
2017年7月13日
- 函數(shù)重載
函數(shù)重載指的是在同一作用域中,可以有一組具有相同函數(shù)名,不同參數(shù)列表的函數(shù)卖陵≡舛ィ→減少了函數(shù)名字的數(shù)目,避免命名空間污染泪蔫。
image.png - 統(tǒng)計(jì)二進(jìn)制中1的個(gè)數(shù)→x|(x+1)棒旗,統(tǒng)計(jì)0的個(gè)數(shù)
image.png -
在堆上創(chuàng)建動(dòng)態(tài)數(shù)組,sizeof(數(shù)組名)→數(shù)組容量撩荣,指向常量的指針铣揉,或者常量指針,sizeof(指針)=4餐曹,計(jì)算的是指針的容量
image.png -
不同內(nèi)置算數(shù)類型在內(nèi)存中所占的比特?cái)?shù)
image.png -
c++→非虛函數(shù)靜態(tài)綁定逛拱,虛函數(shù)動(dòng)態(tài)綁定
java/python遲綁定,統(tǒng)一運(yùn)行時(shí)綁定
image.png - putchar()→Writes a character to the standard output
- 字符串'Beijing'存儲(chǔ)在計(jì)算機(jī)中台猴,需要7+1共8個(gè)字節(jié)朽合,最后一個(gè)字節(jié)為'\0'
- C++中函數(shù)名實(shí)際上是一個(gè)指針,指向函數(shù)的入口
-
main()中 的a饱狂,b為局部變量旁舰,覆蓋了全局的a,b嗡官,而fun()中的為全局的a箭窜,b,對(duì)main()中局部的a衍腥,b沒(méi)有影響
image.png - ^是按位異或磺樱!冪函數(shù)可以使用math.h里面的pow(x,y)
- 大數(shù)問(wèn)題?婆咸?竹捉?
- 內(nèi)存對(duì)齊
- 參考鏈接:http://www.cnblogs.com/jijiji/p/4854581.html
- 參考鏈接:http://www.cnblogs.com/zrtqsk/p/4371773.html
- 規(guī)則:第一個(gè)數(shù)據(jù)成員位于偏移為1的位置,以后每個(gè)數(shù)據(jù)成員的偏移量必須是min(#pragma back()指定的數(shù)尚骄,數(shù)據(jù)成員自身長(zhǎng)度)的倍數(shù)块差;所有數(shù)據(jù)成員對(duì)齊后,要對(duì)當(dāng)前結(jié)構(gòu)體進(jìn)行對(duì)齊倔丈,整個(gè)結(jié)構(gòu)體長(zhǎng)度應(yīng)該是min(#pragma back()指定的數(shù)憨闰,最大數(shù)據(jù)成員長(zhǎng)度)的整數(shù)倍
- 內(nèi)存對(duì)齊的作用:平臺(tái)原因→不是所有的硬件平臺(tái)都能訪問(wèn)任意地址上的任意數(shù)據(jù),某些硬件平臺(tái)只能在某些地址處取某些特定類型的數(shù)據(jù)需五,否則拋出硬件異常鹉动;硬件原因→內(nèi)存對(duì)齊后,CPU內(nèi)存訪問(wèn)速度大大提升宏邮,這是因?yàn)?/strong>CPU在讀取內(nèi)存時(shí)是一塊一塊進(jìn)行讀取的泽示,塊的大小稱作memory granularity內(nèi)存讀取粒度→內(nèi)存對(duì)齊時(shí)缸血,CPU一次就能讀取整個(gè)數(shù)據(jù),內(nèi)存未對(duì)齊械筛,變量跨兩個(gè)內(nèi)存塊捎泻,就要先讀取兩個(gè)內(nèi)存塊,然后組合兩個(gè)內(nèi)存塊中的數(shù)據(jù)埋哟,操作數(shù)目大大增加**
2017年7月14日
- 判斷質(zhì)數(shù)
http://www.cnblogs.com/xiehongfeng100/p/4332998.html - 質(zhì)因數(shù)分解
http://blog.csdn.net/u014361775/article/details/47722337 - str被free后族扰,其所指的內(nèi)存空間被釋放(在堆空間中被標(biāo)記為可回收?定欧?),但是其指向的地址沒(méi)有變化怒竿,成為一個(gè)野指針砍鸠。此時(shí)str不是空指針,strcp(str,"world")耕驰,會(huì)將該內(nèi)存覆蓋為‘world’爷辱。但是理論上被釋放的內(nèi)存不能訪問(wèn)。所以printf(str)有錯(cuò)
image.png - 組合
組合:一個(gè)類里面的數(shù)據(jù)成員是另一個(gè)類的對(duì)象→難點(diǎn)在于構(gòu)造函數(shù)的設(shè)計(jì)朦肘,創(chuàng)建對(duì)象時(shí)既要對(duì)基本類型成員進(jìn)行初始化饭弓,也要對(duì)內(nèi)嵌對(duì)象進(jìn)行初始化
image.png -
常量
image.png
image.png -
字符會(huì)轉(zhuǎn)換成ASCII碼,0.5默認(rèn)類型為double既不能轉(zhuǎn)換為float也不能轉(zhuǎn)換為int媒抠,應(yīng)該寫(xiě)成0.5f
image.png
2017年7月15日
- 二叉樹(shù)的遍歷
- 前序遍歷:先訪問(wèn)根節(jié)點(diǎn)弟断,然后前序遍歷左子樹(shù),再前序遍歷右子樹(shù)
- 中序遍歷:先中序遍歷左子樹(shù)趴生,然后訪問(wèn)根節(jié)點(diǎn)阀趴,再中序遍歷右子樹(shù)
- 后序遍歷:先后序遍歷左子樹(shù),然后后序遍歷右子樹(shù)苍匆,在訪問(wèn)根節(jié)點(diǎn)
2017年8月5日
- c++輸出一位有效數(shù)字
#include<iomanip>
cout << fixed << setprecision(1) << (double)sum / countZ<< endl;
2017年8月13日
- IP地址刘急,DNS地址和子網(wǎng)掩碼
http://jingyan.baidu.com/article/f0e83a25afb6b722e59101e8.html
2017年8月21日
-
CSMA/CD
多點(diǎn)接入、載波監(jiān)聽(tīng)浸踩、沖突檢測(cè)
image.png
image.png - MAC幀
MAC幀是數(shù)據(jù)幀的一種叔汁,而數(shù)據(jù)幀,就是數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元检碗。它包括三部分:幀頭据块,數(shù)據(jù)部分,幀尾折剃。其中瑰钮,幀頭和幀尾包含一些必要的控制信息,比如同步信息微驶、地址信息浪谴、差錯(cuò)控制信息等开睡;數(shù)據(jù)部分則包含網(wǎng)絡(luò)層傳下來(lái)的數(shù)據(jù),比如ip數(shù)據(jù)包苟耻。
2017年8月26日
- 數(shù)組做形參
-
一維數(shù)組:
image.png - 二維數(shù)組:void test(int a)→調(diào)用時(shí)需要test((int) a)篇恒,強(qiáng)制類型轉(zhuǎn)換;void test(int a[][10])凶杖;void test(int a[10][3]);
image.png
2017年9月6日
-
c++中的類和c中的struct的區(qū)別
image.png -
全局變量和局部變量的區(qū)別
image.png