1. 程式人生 > >C++快速入門、變量、基本類型

C++快速入門、變量、基本類型

如果 style line clas 沒有 建立 oat 有時 變量名

整理看書過程中要註意的點

1、每個函數都必須指定返回類型,main函數的返回類型為int,通常return 0;,return 語句後面要增加“;” 2、C++文件後綴:cc,cpp,cxx,cp,c,visual C++認 *.cpp 3、輸入輸出使用iostream庫,用cin, cout, cerr, clog,這些都包含在std namespace中 若在文件的開頭沒有寫using namespace std,則用的時候應該是std :: cin 4、建立Visual C++ 工程文件時,選 win32 console application 5、在新的編譯器中,
在for中定義並初始化的變量,在退出for之後不能再次使用

6、wchar_t(16位)用於拓展字符,如中文、日文 7、short 16位,半個機器字長 int 16位,1個機器字長 在32位系統中,int 和 long有時字長是相同。 8、int 、short、long默認帶符號位 不需要帶符號需增加unsigned前綴 若僅寫unsigned類型,則認為是 unsigned int 9、把-1賦值給unsigned char 類型的數,=255 -1=-1*256+255 C++對溢出的數求模取余 10、float 用32位描述,但只有6個有效位 double用64位描述,有10個有效位 long double 用96或128位描述,有10個有效位 11、以0(零)開頭的數字常表示8進制 0x開頭的數字常表示16進制 12、指定LONG類型可以在數字後面增加”L“,無符號可以加”u“,float可以加"F", 采用科學計數法時,用E或e表示 在字符面前增加L就能得到wchar_t類型的寬字符面值,如L’a‘

13、為兼容C,C++的string類型的字符串,在字符串的最後會增加一個空字符 如‘A’,是1個字符 “A”,是1個字符A加1個空字符 L“A”,寬字符串 14、兩個相鄰的字符串(或者兩個寬字符串:註,一定要相同類型)或寬字符串,中間如果是空格、制表符、換行符,則分行撰寫可以形成一行,如 std::cout<<"I" “The” "world"<<std::endl; 將輸出 I The world的結果

15、多行面值,可以用反斜杠操作,可將下一行當同一行處理,反斜杠後不能加任何字符,反斜杠的下一行不允許有其他無關字符。 std::cou\ t<<"Hi"<<st\ d::endl 16、回車和換行轉義符號的區別 ‘\r‘是回車,前者使光標到行首,(carriage return)

‘\n‘是換行,後者使光標下移一格,(line feed)

\r 是回車,return
\n 是換行,newline
對於換行這個動作,unix下一般只有一個0x0A表示換行("\n"),windows下一般都是0x0D和0x0A兩個字符("\r\n"),蘋果機(MAC OS系統)則采用回車符CR表示下一行(\r)

Unix系統裏,每行結尾只有“<換行>”,即“\n”;
Windows系統裏面,每行結尾是“<回車><換行>”,即“\r\n”;
Mac系統裏,每行結尾是“<回車>”,即“\r”。
一個直接後果是,Unix/Mac系統下的文件在Windows裏打開的話,所有文字會變成一行;而Windows裏的文件在Unix下打開的話,在每行的結尾會多車一個^M字符。
寫不同的系統代碼,要根據系統的要求來編寫代碼。
第17~24 講解了變量的初始化方法,變量名的同義定義,常量的定義方法,類型的同義定義,枚舉類型的使用,這些在32位嵌入式芯片的程序設計中都是基礎中的基礎,一定要牢牢掌握,後續再抽空撰寫32位內核芯片的常見定義以及相關說明的解讀。
17、初始化

直接初始化: int ival(1024); 復制初始化: int ival=1024; 直接初始化語法更靈活,效率更高。 在C++中,可以用前面已初始化的變量,初始化下一個變量,如 int a=12,b(a+1); 18、類中,定義如何進行初始化的成員函數稱為構造函數。一個類可以定義幾個構造函數。當類裏面沒有構造函數時,則會自動調用默認的構造函數。 初始化一個字符串的三種方法 std::string title="C++ plus"; std::string title2("C++ plus"); 也可以通過1個計數器和一個字符初始化string對象 std::string title3(10,‘9‘); //title3=9999999999 19、定義,分配空間和初始值 聲明,講明類型和名字 一個變量只有1個定義,但可以有多個聲明(不包含帶初始化情況的聲明),聲明通常配合extern進行 extern表明變量在別處已經定義過。 任何在多個文件中使用的變量都需要有與定義分離的聲明,在這種情況下,一個文件含有變量的定義,使用該變量的其他文件則包含該變量的聲明。 20、const 把一個對象轉換成一個常量,常量在定義後不能修改,所以定義時必須初始化。 例如: const int bufSize = 512; 21、const 默認為文件的局部變量,所以在其他文件中要使用時,需增加extern 聲明。 22、引用,對象的另外一個名字,定義的時候要增加& 在匯編程序中,相當於2個變量EQU同一個寄存器,無論哪個變量名去操作,寄存器的值都會發生變化

int ival = 1024;

int &refval= ival; //引用的定義 refval++ std::cout<<ival; //輸出的結果為1025 在常數的定義中,也存在類似的用法,例如, const int ival=1024; const int &kval = ival; 23、typedef,定義數據類型的同義詞。可以起到隱藏特定類型的目的,同時也使人更容易理解。 typedef double wag; typedef wag salary; //salary 實際就是double類型 24、枚舉類型(關鍵字:enum) 默認枚舉的第一個成員為0,也可以初始化第一個,後面依次+1,例如: enum form{shape=1,sphere,cylinder,polygon}; 但是,枚舉的值又不是唯一的,例如 enum point{point2d = 2, point2w ,point3d = 3, point3w}; // point2w = 3; point3w = 4; point pt1 = point2d;

註意:不能用int的定義,例如: point pt1 = 2;

25、類類型 類的定義以class關鍵字開始,包含接口(操作:成員函數)和實現(數據:數據成員)兩部分; class Sales_item{ public: private: std::string isbn; unsigned units_sold; double revenue; };// “;”號是最容易被遺忘的部分 類可以包含0到多個public或private,每一個類就是一種新的類型。 類的數據成員不是在初始化時定義,而是通過構造函數。 不是類的組成部分的代碼,不能訪問private 成員,這樣可以保護類中的數據成員。 26、struct 關鍵字(主要從C語言中繼承過來) ——在32位芯片程序的開發中常用到,在C語言中struct中不放成員函數,這一點與C++有很大的區別。而在硬件的底層編程中,主要使用C語言類型的結構體,所以要關註這點。 struct中,未使用private部分默認為public; class中,未使用public部分默認為private;

27、設計自己的頭文件

因為頭文件包含在多個源文件中,所以不應該含有變量或函數的定義,#ifndef 只能保證在同一個文件中,相同的頭文件段值包含一次;若同一個工程文件中的多個文件均有多個變量的定義,則編譯的過程會報錯。 但是有三個例外: ① 類; ② const 對象; ③ inline 函數 使用頭文件的格式有兩種: #include <iostream>//在指定的目錄查找標準的頭文件 #include"iostream.h"//在源目錄查找【工程文件所在的目錄】

28、預處理器

預處理器變量的名字在程序中必須唯一,否則其他重復的地方都將關聯到預處理器變量 為了避免名字沖突,預處理器變量通常用大寫字母 格式: #ifndef SALESITEM_H #defineSALESITEM_H #endif //結束預定義處理

C++快速入門、變量、基本類型