



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.編程入門基礎知識總結基本知識程序= 算法+ 數據結構,算法是對操作的描述,數據結構是對數據的描述。偽代碼: pseudo code程序一般包括:( 1)預處理命令: #include 等( 2)全局聲明部分( 3)函數:函數首部(聲明)、函數體(局部聲明 +執行部分)程序執行過程源程序 ->編譯成目標程序 obj-> 連接目標程序成可執行文件類:數據成員 +成員函數命名空間實際上就是一個由程序設計者命名的內存區域。程序員可以根據需要指定一些有名字的空間域,把一些全局實體分別放在各個命名空間中,從而與其它全局實體分隔開,解決名字沖突,防止全局命名空間污染。C+庫的所有標識符(標準頭
2、文件中函數、類、對象、類模版)都是在std 命名空間定義的A 的 ASCII碼值 65a 的 971.數據類型?基本類型:整型、浮點型、字符型、布爾型?構造類型:枚舉、數組、結構體類型(struct )、公用體(union )、類類型?指針類型?引用類型?空類型: nullint 4unsigned int 4short int 2unsigned short int 2long int 4unsigned long int 41/23.char 1uchar 1float 4double 8long double 8無符號:不用保存符號位,故比有符號多了一位有符號:數值用補碼存放(無論正負
3、),最高位為符號位VC 中, long double 與 double 字節數相同,故long double 是無用的GCC中, long double 則有 12 個字節無負值的量可以定義為unsigned int ,如年齡、學號等,以增大存儲范圍。short int ,long int , unsigned int 這些類型后面的int 可以省略整型表示:十進制,后面加L 或 l八進制,前面加0十六進制,前面加0x浮點數表示:默認為雙精度型double后面加f 或 F 則為單精度float后面加l 或 L 則為長精度型long double指數形式數符數字部分指數部分a = 3.14e2a
4、=0.314e4a=31.4e1a=3140e-1浮點數, 不管是用小數形式還是指數形式表示,在內存中都是以指數形式表示的,且數字部分必須小于1如 3.14159 在內存中表示為+.3141593 ,數字部分為.314159,是小于1 的字符型字符型在內存中存儲的是ASCII碼,也是整型,故而可以把字符型賦給整型2/23.字符串后面,編譯系統會加個符號常量'0' 作為結束符用符號代表一個常量,如#definePI3.14159在編譯時,系統會把符號常量替換成具體的值2.變量變量:程序運行期間,值可變的量變量名:代表內存中的一個存儲單元,在編譯連接時由系統給每一個變量分配一個地址
5、標識符:標識實體名字的有效字符序列,字母、數字、下劃線常變量:定義變量時加上const,運行期間值不可變,也即只讀變量區別 #define定義的符號常量與const定義的常變量符號常量只是用一個符號代表一個常量, 在編譯時把所有符號常量替換為指定的值,類型,在內存中不存在以符號常量命名的存儲單元它沒有常變量具有變量的特征, 具有類型, 在內存中有以它命名的存儲單元,常變量代表的存儲單元值不可變。與一般變量不同的是,強定義的好處1.保證變量名使用的正確,不正確會在編譯時報錯2.每個變量指定為一確定類型,在編譯時就能為其分配存儲單元3.編譯時即可檢查變量進行的運算是否合法。3. 運算符二進制位運算
6、& 二進制 按位與|二進制按位或 按位異或3/23.<< 左移位>> 右移位+ - 自加自減運算符+i使用 i 之前, i 先自加i+使用 i 之后, i 再自加+ - 結合方向為自右向左例:!x+先取非,再 +(i+)+6先 i+6,后 i+,不管有無括號,都是先運算,再自加(+i)+6 先自加,再加6-i+ :i 左面是符號運算符,右面是自加運算符,設 i 等于 3,運算過程相當于-(i+),即 -i=-3-3+1=-2a = -i+: a 結果為 -3,先賦值,再自加;5-i+ =?答案 2?待測試i=1,j=2, 則 a = i+j ?答案: 3 因為相
7、當于a=(i+)+j;i=1,j=2, 則 a=i+(+j)?答案: 4賦值運算符 =的優先級小于+ - 運算符4/23.示例:int arr = 6,7,8,9,10;sint *ptr = arr;*(ptr+) += 123;printf("%d,%d",*ptr,*(+ptr);解:*(ptr+) += 123;相當于*ptr +=123;*ptr+;故 arr0 = 129; ptr 指向 arr1printf 函數從右向左壓棧,運算順序:+ptr; 輸出結果:8 8cout 也是自右向左壓棧。逗號運算符又稱順序求值運算符a = 3*4,a*5 則 a=? 答案
8、12 ? 注意逗號運算符優先級最低。注:整個逗號表達式的值為 60( a=3*4=12 , 12*5 =60 )x=(a=3,6*3)則 x=18x=a=3,6*a則 x=33.內存存儲浮點數在內存里和整數存儲方式不同5/23.float a =1.0f;cout<<(int)a=(int&a);(int&a)相當于把該浮點數地址開始的sizeof(int) 個字節當成int 型數據輸出,其值并不為1(int)a 顯示轉換等于14.類型轉換轉換本質:按存儲單元中的存儲形式直接傳送( 1)浮點型賦給整型,舍棄小數部分( 2) double 型賦給 float ,防止溢
9、出錯誤( 3) int , short , long 賦給 char,原封不動取低八位(4) signed 賦給 unsigned,符號位照搬。負數以補碼形式存放,-1 賦給 unsigned int ,結果為 65536.整數不會變,除非兩個長度不同(int , long )發生截斷6/23.5.C+輸入輸出C+輸入輸出包含三個方面的內容( 1)對系統指定的標準設備的輸入輸出。即從鍵盤輸入、輸出到顯示器屏幕,稱標準輸入輸出,簡稱標準 I/O(2)以外出磁盤文件為對象進行輸入輸出,稱文件I/O( 3)對內存中指定空間進行輸入輸出,通常指定一個字符數組作為存儲空間,稱字符串輸入輸出,簡稱串 I/
10、O在 C+中,輸入輸出流被定義為類。 C+的 I/O 庫中的類稱為流類,用流類定義的對象稱流對象。C+中輸入輸出是調用輸入輸出流庫中的流對象cin 、cout 實現的,即I/O 不是 C+本身定義的,而是編譯系統的I/O 庫中定義的。I/O 控制符 #include <iomanip>setprecision(n)設置精度為n,7/23.十進制輸出時,n 代表有效數字位數包括整數和小數;fixed(固定小數位數)和scientific (指數)形式輸出時,n 指小數位數(不包括整數部分)double a = 123.4567890123456cout << a;/ 十進
11、制輸出,輸出123.456默認精度為6cout<<setprecision(9)<<a;/ 十進制,輸出123.456789精度為 9cout<<setprecision(6);/ 恢復默認精度cout<<setioflags(iOS:fixed)<<a;/ 固定位數, 123.456789 ,此時精度表示小數位數,精度為默認的 66.getchar() 和 putchar()cout<<getchar();/ 讀入的實際是ASCII 碼,故輸出為字符ASCII 碼, 97,而非讀入的字符cout<<(c=ge
12、tchar();/ 輸出為字符while(c=getchar()!='n')/ 循環讀入字符的控制8/23.7.函數與模版函數原型:不同具體形參的函數聲明如: float add(float,float)主要作用:根據函數原型,在程序編譯階段對調用函數的合法性進行全面檢查。函數重載: 同一函數名定義的多個函數, 這些函數的參數個數,參數類型, 參數順序至少有一項不同,一個函數不能既是重載函數,又是帶默認參數的函數。函數模版:適用于函數個數相同,函數體相同,而只有類型不同的情況cpp view plain copy01.#include <iostream>9/23.
13、02.using namespace std;03.template <typename T> / template <class T>04.T max(T a, T b, T c)05.06.if(b>a)a = b;07.if(c>a)a = c;8. return a;09.10.int main()11.12. int a=1,b=2,c=3;13. cout<<T(a,b,c);14. float d=1.1,e=2.2,f=3.3;15. cout<< T(d,e,f);16.變量作用域:變量有效范圍,有四種:文件作用域f
14、ile scope函數作用域function scope10/23.塊作用域block scope函數原型作用域function prototype scope遞歸函數:函數體中,直接或間接調用函數本身的函數。變量的存儲類別:外部、局部(相對于函數而言)全局變量(也即外部變量)靜態局部變量(static )自動變量(不加static 的局部變量)寄存器變量( register ) 存放在 CPU中,而非內存中,這樣在使用時就省去了從內存中載入寄存器的過程。 但只是建議性的, 優化編譯系統自動識別使用頻繁的變量, 從而自動將變量放入寄存器中。extern 聲明的外部變量即提前引用申明, 表示該變
15、量是將在下面定義的全局變量或在其它文件中定義(本文件中不用 extern ,引用該變量的外部文件用extern 進行聲明)static 聲明的靜態外部變量只能被本文件使用,而不能被外部文件使用的全局變量,這樣不同文件中的全局變量不會相互干擾,為程序模塊化、通用化提供方便。11/23.注:全局變量也是靜態存儲的。內部函數與外部函數內部函數: static 聲明,文件內使用外部函數:另一個文件里extern 聲明,表示是其它文件的函數,extern 可以省略宏定義#define PI 3.14定義符號常量#define Area(a,b)a*b/ 定義函數功能,下面當作函數來用。#include
16、<iostream>'iostream'區別<> 在系統目錄尋找,找不到報錯' '在當前目錄尋找,找不到報錯字符數組12/23.(1) char str = "i am happy"數組長度為11,而非 10,因為后面有一個'0'(2) char str = 'i','a','m','h','y'數組長度為5,系統不會自動為其在后面加'0'因此, (1),(2)是不同的輸出字符數組 :cout<<
17、str;string 類字符數組是C 中的處理方式,C+中用 string 類, #include <string>字符串變量中不會存放'0' ,只存放字符串本身,故string str ="hello"的長度為5,要注意。字符串變量存儲的實際是字符串的指針,4 個字節,sizeof(string) = 4;string name="i","am","happy"sizeof(name) = 3*4 = 12;13/23.變量與指針:int *p = &i;/int型指針變量,定
18、義時的* 只是表示指針類型p 是指針變量,其值是變量i 的地址, *p 則是存儲單元,*&a 與 *p 同,都表示變量a指向數組的指針int a10 = ;int *p;p = &a0;/ 與下面等價,都指向數組第一個元素,因為數組名本身就是表示數組的地址p = a;*p+ 相當于 *(p+) ,先得到 *p 的值, p 再+移到下一個元素14/23.(*p)+ 則是使 *p 的值 +1二維數組的指針表示:*(*(p+i)+j)表示ai,j*int (*p)np 為指向含 n 個元素的數組的指針int *pn定義指針數組P函數指針指向函數的指針,主要用作形參int max(in
19、t,int);int (*p)(int,int);p = max; 賦值(地址)p(1,2)/ 調用15/23.引用int a = 10;int &b = a;b 是對 a 的引用引用傳遞,引用型變量作為函數形參cpp view plain copy01./ 值會改變02.main3. int i=5,j=6;4. swap(i,j)05.06.void swap(int &a, int &b)/ 這里的 & 不是“ a 的地址”,而是指“a 是一個引用型變量”,&是個聲明符07.8. int temp;9. temp = a;10. a= b;16/2
20、3.11. b=temp;12.傳遞變量地址:形參是指針變量,實參是變量地址,這種虛實結合的方法仍然是“值傳遞”方式,只是實參的值是變量地址而已。cpp view plain copy01./ 值會改變02.main()03.4. int i=5,j=6;5. swap(&i,&j)06.07.void swap(int *p1, int *p2)/ 這里的 * 號也只表示是指針類型08.9. int temp;10. temp = *p1;11. *p1 = *p2;12. *p2 = temp;17/23.13.結構體變量struct作函數參數時有三種形式(1)用結構體變量
21、名作形參這時形參要開辟內存單元,實參中全部內容通過值傳遞方式一一傳遞給形參,時空開銷大,效率低(2)用指向結構體變量的指針作形參,只有四個字節void printed ( student *p)cout<<p->num;18/23.(3)用結構體變量的引用變量作形參Student stu;print(stu);void print(Student &stu)cout<stu.num;new delete動態內存分配new 類型 (初值 ),返回地址,分配失敗返回NULLfloat *f = new float(3.14);19/23.int *i = new i
22、nt(6);int *k = new int54;/ 數組delete 變量delete f;delete i;數組delete k;Enum 枚舉類型聲明枚舉類型enum weekdaysun,mon,tue,wed,thu,fri,sat;定義枚舉變量weekdayworkday,week_end;變量賦值:workday = mon;或workday = weekday(2);枚舉常量對應值從0 開始, 0, 1, 2, 3.typedef聲明新類型typedef int INTEGER ,相當于為 int 起了個別名, 下面程序中就可以直接用 INTEGER作 int 用了主要為了方便
23、系統移植,如 long int 在 VC 中 4 個字節,在 GCC 中占 8 個字節,直接用 int 的話可能會溢出,用 INTEGER就不用擔心了,只要把 ypedef int INTEGER 聲明語句一改就行運算符重載方法是定義一個重載運算符的函數, 在需要執行被重載的運算符時, 系統就自動調用該函數,以實現響應運算。即運算符重載是通過定義函數實現的,運算符重載實際上是函數重載。格式:函數類型operator運算符名稱(形參表列 )20/23.對運算符的重載處理例如:將+ 用于 Complex 類(復數)的加法運算,函數原型如下:Complex operator + (Complex&a
24、mp; c1, Complex& c2);注: operator是關鍵字,operator +就是函數名,可以描述為:函數 operator + 重載了運算符 +整數加可以想象為調用如下函數int operator + (int a,int b) return a+b; cpp view plain copy01.#include <iostream>02.using namespace std;03.class Complex04.5. public:21/23.6. Complex()real=0;imag=0;7. Complex(double r, double r)real=r;imag=i;08.Complex operator + (Complex &c2);/ 聲明重載運算符的函數9. void display();10. private:11. double rea;12. double imag;13.;14.Complex Complex:operator + (Complex &c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國加氫站項目創業計劃書
- 中國口腔植入材料項目創業計劃書
- 中國人造血漿項目創業計劃書
- 中國橘、橙項目創業計劃書
- 中國光驅配件項目創業計劃書
- 2025照明設備采購與銷售合同
- 中國高爾夫綠化項目創業計劃書
- 中國5G傳輸網絡切片項目創業計劃書
- 2025年部編版語文六年級下冊第二次月考試題及答案(共4套)
- 內存安全與優化-第1篇-洞察闡釋
- 個人理財小助手智能終端系統及應用開發
- 高中英語口語考試
- 眼耳鼻喉口腔科說課PPT
- 過濾器設計計算書
- 新一代寄遞平臺投遞PC(課堂PPT)
- 雙脈沖測試法對英飛凌FF300R12ME4的測試和研究
- 安冷庫制冷系統安裝全文明施工方案
- 機械設計外文文獻翻譯、中英文翻譯、外文翻譯
- 大體積混凝土澆筑與振搗方案
- 中山大學南方學院互聯網 大學生創新創業大賽評分表
- 保險精算業中英翻譯術語及表達式詞庫
評論
0/150
提交評論