国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++Primer學習筆記

2019-11-08 03:10:19
字體:
供稿:網(wǎng)友


1、RegOpenKeyEx(......)打開一個指定的注冊表鍵(比如:HKEY_CURRENT_USER),安全性設置為KEY_QUERY_VALUE2、幾乎所有創(chuàng)建內(nèi)核對象的函數(shù)都有一個允許我們指定安全屬性信息的參數(shù),相反用于創(chuàng)建用戶對象或GDI對象的函數(shù)都沒有。3、FormatMessage,可以講消息ID轉(zhuǎn)換成字符串。4、,在c語言中,字符是按其所對應的ASCII碼來存儲的,一個字符占一個字節(jié),‘/0’,對用的ASCII為0,對應的字符數(shù)NULL,表示字符串結(jié)束;‘0’, 對應的ASCII碼是48,48對應的十六進制數(shù)就是0x30;“0”,是字符串常量。5、兩個很有用的宏:ASSERT和VERIFY。前者只在Debug下有效,后者在Debug和Release都有效。通常ASSERT用的比較多,但是需要注意兩點:第一,是在條件為假時輸出診斷信息;第二,由于ASSERT只在Debug版本下有效;6、輸出宏和函數(shù) ①使用TRACE,其語法類似PRintf,用于向Output窗口輸出信息。該宏僅僅在程序的Debug版本中出現(xiàn),在release版本中無效。②使用printf時,在Debug和Release版本下都會輸出信息。③使用TRACE和printf時,既可以輸出字符串,也可以輸出格式化信息,如(以TRACE為例)  TRACE(_T("This is a test/n"));  TRACE(_T("This is NO.%d test/n"), cnt);④使用OutputDebugString輸出字符串信息,其函數(shù)原型如下:   VOID OutputDebugString(LPCTSTR lpOutputString);          該函數(shù)在Debug和Release版本中都有效,但是只能輸出字符串,如果想輸出變量值,需要自己先格式化。7、CFILETIME和FILETIME內(nèi)存結(jié)構(gòu)一樣,所以可以強制轉(zhuǎn)換。8、在Watch窗口中選擇一行,然后輸入$err,hr,則可以讓它永遠顯示線程的上一個錯誤代碼和錯誤文本描述。9、WinError.h包含了Microsoft定義的錯誤代碼列表。10、對于寬字符而言,其所占的內(nèi)存大小為len*sizeof(TCHAR),在內(nèi)存中的大小都是以字節(jié)進行計算的11、理解各個內(nèi)存分配函數(shù)的用法和區(qū)別12、inet_addr函數(shù)需要一個字符串作為其參數(shù),該字符串指定了以點分十進制格式表示的ip地址(例如:192.168.0.16)。而且inet_addr函數(shù)會返回一個適合分配給S_addr的u_long類型的數(shù)值。13、Inet_ntoa函數(shù)會完成相反的轉(zhuǎn)換,它接受一個in_addr結(jié)構(gòu)體類型的參數(shù)并返回一個以點分十進制格式表示的IP地址字符串。http://blog.csdn.net/cx_wzp/article/details/818017514、sizeof()---求所占的字節(jié)數(shù)(1)對于整型字符型數(shù)組(2)對于整型或字符型指針15、strlen()---字符數(shù)組或字符串所占的字節(jié)數(shù)(1)、針對字符數(shù)組(2)、針對字符指針16、scanf無法讀入空格,在串中遇到空格時,結(jié)束字符串的輸入,所以如果用戶輸入"abcd  efg"的話,scanf取得的字符串為"abcd"。17、sizeof計算的結(jié)果包含結(jié)束符/0,而strlen計算的結(jié)果不包含結(jié)束符/0(其ASCII值就是0)18、字符串的操作都是以/0作為結(jié)束符的,沒有遇到/0則對字符串的操作不會結(jié)束。19、拼接字符串常量:任何兩個由空白(空格、制表符/t、換行符)分隔的字符串常量都將自動拼接成一個;注意:拼接時不會再被連接的字符串之間添加空格,第二個字符串緊跟著第一個字符串的最后一個字符(不考慮/0)。20、cin,sprintf等實用空白(空格、制表符、換行符)來確定字符串的結(jié)束位置,這意味著cin在獲取字符數(shù)組輸入時,只讀取空格前的一個字符串(ni hao,只讀取到了ni,而hao繼續(xù)留在輸入隊列中等待下次讀取);21、istream中類(如cin)提供了面向行而不是單詞的方法:getline(此函數(shù)每次讀取一行,通過換行符來確定行尾,但是不保留換行符,而是回車產(chǎn)生的換行符直接用結(jié)束符/0替代)和get(方法類似,但是它將換行符保留在輸入隊列中,下次再調(diào)用的時候讀取的將是換行符直接讀完不能跨越,所以需要多調(diào)用一次不帶參數(shù)的get(),它可讀取下一個字符即使是換行符,如:cin.get(buf,size);cin.get();//讀取殘留在輸入隊列中的換行符,這樣才不會影響下次的get調(diào)用cin.get(buf,size))。int year;(cin>>year).get();//將留在輸入隊列中的回車鍵取出一面下一次調(diào)用讀取的時候,讀取到回車鍵還以為是空字符22、get和getline返回的都是cin對象,隨意可以cin.get(buf,size).get();cin.getline(buf,size).getline(buf,size)相對于兩次調(diào)用。23、當get讀取空行后將設置失效位(不是getline),這意味著接下來的輸入將被阻斷,必須使用cin.clear()來進行恢復24、當輸入的字符串可能比分配的空間長。則get()/getline()將把剩余的字符留在輸入隊列中,而getline還會設置位置失效位,并關(guān)閉后面的輸入。25、對于匿名的共用體(union),沒有名稱,其成員將成為位于相同地址處的變量。而且每次只能是一個成員是當前的成員。26、 short tell[10] = {1,2,3,4,5,6,7,8,9,10}; short *p1 = tell;       //p1指向的是tell[0]的地址,tell默認指的是其第一個short元素所存儲的地址 short (*p2)[10] = &tell;//&tell則表示整個數(shù)據(jù)的地址,p2是一個指向具有10個short類型的數(shù)組的指針 short sTemp = (*p2)[5]; //*p2與tell等價27、數(shù)組名被解釋為數(shù)組第一個元素的地址;28、自動變量時在函數(shù)中聲明的變量,在該程序執(zhí)行到其所屬的代碼塊時產(chǎn)生,在離開該代碼塊時終止;靜態(tài)變量時在函數(shù)外或者使用關(guān)鍵字static聲明的變量,始終在整個程序的周期內(nèi)存在;動態(tài)內(nèi)存是通過new、delete來在程序運行時動態(tài)分配的,并且是人工釋放。29、標準頭文件cstring包含了strlen()和其他一些與字符串相關(guān)的函數(shù)原型。30、在C++中,只有被聲明為const的成員函數(shù)才能被一個const類對象調(diào)用;要聲明一個const類型的類成員函數(shù),只需要在成員函數(shù)參數(shù)列表后加上關(guān)鍵字const,例如char get() const; 在類體之外定義const成員函數(shù)時,還必須加上const關(guān)鍵字,例如:char Screen::get() const { return _screen[_cursor];}  若將成員成員函數(shù)聲明為const,則該函數(shù)不允許修改類的數(shù)據(jù)成員。31、在類的聲明時,要定義常量的方法有兩種:第一種采用枚舉;第二種采用static定義的成員變量,他是這個類的所有對象所共有的;例如:class Test{ enum{MAX = 12};//枚舉定義常量 int item_[MAX]; static const int MIN = 2;//static定義常量 int data_[MIN];};32、作用域內(nèi)的枚舉,當在同一類中兩個枚舉中存在同名的時候,如下:enum egg{Small,Medium,Large};enum T_shirt{Small,Medium,Large};所以當他們處于同一作用域的時候,編譯會報錯,所以使用關(guān)鍵字struct,class來限定枚舉的定義域,如下:enum class egg{Small,Medium,Large};enum class T_shirt{Small,Medium,Large};egg choice      = egg::Small;T_shirt shirt   = T_shirt::Small;這樣就不會發(fā)生命名沖突了 33、在編寫模板類的時候,類的實現(xiàn)要和類的申明放在同一個.h中   34、gethostbyname()函數(shù)將名字轉(zhuǎn)換為指向hostent結(jié)構(gòu)變量的指針,再將hostent結(jié)構(gòu)變量的地址成員用bcopy賦值到sockaddr_in結(jié)構(gòu)變量上。  35、Word v = MAKEWORD(lowByte,highByte),返回一個無符號16位整形數(shù)。  36、調(diào)用getsockopt()函數(shù)獲取Socket選項,調(diào)用setsockopt()函數(shù)設置Socket選項。   37、char str[] = "chinese people";    char *p    = &str[0];    ++*p++;//此表達式等價于++(*(p++)),后++的優(yōu)先級最高,地址加1,然后取當前地址中的值,然后再將值加1。變量的自增自減是修改變量的值,指針的自增自減是修改指針的指向地址。38、實際上,左值是一個存儲地址,也就是一塊內(nèi)存存儲數(shù)據(jù)所要操作的地址。而右值是一個具體的數(shù)據(jù)或者數(shù)值,也就是改內(nèi)存存儲的數(shù)據(jù)內(nèi)容。變量是左值,可以出現(xiàn)在賦值語句的左邊。數(shù)字字面值是右值,不能被賦值。39、printf計算參數(shù)時是按照從右向左壓棧的(從右到左進行計算),例如printf("%d,%d/n",a,a++);先執(zhí)行a++。40、extern "C"的主要作用就是為了能夠正確實現(xiàn)C++代碼調(diào)用其他C語言代碼。加上extern "C"后,會指示編譯器這部分代碼按C語言的進行編譯,而不是C++的。由于C++支持函數(shù)重載,因此編譯器編譯函數(shù)的過程中會將函數(shù)的參數(shù)類型也加到編譯后的代碼中,而不僅僅是函數(shù)名;而C語言并不支持函數(shù)重載,因此編譯C語言代碼的函數(shù)時不會帶上函數(shù)的參數(shù)類型,一般之包括函數(shù)名。41、在const成員函數(shù)中,用mutable修飾成員變量后,就可以修改類的成員變量了。42、結(jié)構(gòu)體的長度一定是最長的數(shù)據(jù)元素的整數(shù)倍。43、printf()輸出16、10、8進制分別為,%x,%d,%o,%4x表示按16進制輸出,補齊4位的寬度,補齊位為空格,默認右對齊,%04x表示按照16進制輸出,補齊4位的寬度,補齊位為0,默認右對齊。44、靜態(tài)變量是存放在全局數(shù)據(jù)區(qū)的,而sizeof計算棧中分配的大小,是不會計算在內(nèi),所以在計算一個結(jié)構(gòu)體或者類的大小時,是不會把static修飾的變量所占的內(nèi)存也計算進去。45、sizeof():是運算符,可以參數(shù)可以是各種類型,其計算的長度包括"/0",int f(){return 0;},sizeof(f),在編譯階段會被函數(shù)返回值的類型取代,在這里返回4;    strlen():是函數(shù),只能用char*作為參數(shù)傳入,它內(nèi)部實現(xiàn)是一個用循環(huán)計算字符串的長度,直到"/0"為止,其計算的長度不包括"/0"。   注:以上兩個方法在計算數(shù)組大小的時候,都沒有將數(shù)組名看成是指針進行大小計算。46、一個空類所占的空間為1,多重繼承的空類所占的空間還是1,但是如果此類是虛繼承父類,則會存在虛表(虛指針),所以此類的大小就為4。   47、宏是代碼處不加任何驗證的簡單替代(編譯預處理階段),而inline內(nèi)聯(lián)函數(shù)是將代碼直接插插入調(diào)用,關(guān)鍵字inline必須和函數(shù)定義體放在一起才能使函數(shù)成為內(nèi)聯(lián)。 48、淺拷貝和深拷貝的區(qū)別:在有指針的情況下,淺拷貝只是增加了一個指針指向已經(jīng)存在的內(nèi)存,而深拷貝就是增加一個指針并且申請一個新的內(nèi)存,使這個增加的指針指向這個新的內(nèi)存,采用深拷貝的情況下,釋放內(nèi)存的時候就不會出現(xiàn)在淺拷貝時重復釋放同一內(nèi)存的錯誤!!!                                                                                                                        


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 麦盖提县| 长海县| 大兴区| 康定县| 康乐县| 绥化市| 东至县| 九龙城区| 开鲁县| 临澧县| 安乡县| 禄劝| 铜鼓县| 泰州市| 长顺县| 襄城县| 蚌埠市| 淳化县| 上高县| 广河县| 磐安县| 阿拉善右旗| 隆林| 北川| 襄垣县| 乐清市| 阿拉善左旗| 岳阳市| 贵德县| 南汇区| 城市| 元氏县| 蒙阴县| 休宁县| 策勒县| 南川市| 田东县| 藁城市| 玉田县| 布尔津县| 邹城市|