編程入門基礎(chǔ)知識總結(jié)_第1頁
編程入門基礎(chǔ)知識總結(jié)_第2頁
編程入門基礎(chǔ)知識總結(jié)_第3頁
編程入門基礎(chǔ)知識總結(jié)_第4頁
編程入門基礎(chǔ)知識總結(jié)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、編程入門基礎(chǔ)知識總結(jié)基本知識程序 =算法+數(shù)據(jù)結(jié)構(gòu),算法是對操作的描述,數(shù)據(jù)結(jié)構(gòu)是對數(shù)據(jù)的描述。 偽代碼:P seudo code程序一般包括:(1)預(yù)處理命令: #include等(2)全局聲明部分(3 )函數(shù):函數(shù)首部(聲明)、函數(shù)體(局部聲明+執(zhí)行部分)程序員可以根據(jù)需要指定一些有名字的空間 從而與其它全局實體分隔開, 解決名字沖突,程序執(zhí)行過程 源程序-編譯成目標(biāo)程序0切-連接目標(biāo)程序成可執(zhí)行文件 類:數(shù)據(jù)成員+成員函數(shù) 命名空間 實際上就是一個由程序設(shè)計者命名的內(nèi)存區(qū)域。 域,把一些全局實體分別放在各個命名空間中, 防止全局命名空間污染。std命名空間定義的C+庫的所有標(biāo)識符(標(biāo)準(zhǔn)頭

2、文件中函數(shù)、類、對象、類模版)都是在A的ASCII碼值65 a的971.數(shù)據(jù)類型浮點型、字符型、布爾型數(shù)組、結(jié)構(gòu)體類型( struct)、公用體(union )、類類型?基本類型:整型、?構(gòu)造類型:枚舉、?指針類型?引用類型null?空類型:int 4long int 4char 1float 4un sig ned int 4un sig ned long int 4 uchar1 double 8short int 2un sig ned short int 2long double 8無符號:不用保存符號位,故比有符號多了一位 有符號:數(shù)值用補碼存放(無論正負(fù)),最高位為符號位VC中,l

3、ong double與double字節(jié)數(shù)相同,故 long double是無用的 GCC中,long double則有12個字節(jié)無負(fù)值的量可以定義為unsigned int,如年齡、學(xué)號等,以增大存儲范圍。unsigned int這些類型后面的int可以省略short int,long int,整型表示:Ox十進(jìn)制,后面加L 八進(jìn)制,前面加0 十六進(jìn)制,前面加 浮點數(shù)表示: 默認(rèn)為雙精度型 double 后面加f或F則為單精度float后面加I或L則為長精度型long double指數(shù)形式數(shù)符數(shù)字部分指數(shù)部分a = 3.14e2a=0.314e4a=31.4e1a=3140e-1浮點數(shù),不管是

4、用小數(shù)形式還是指數(shù)形式表示,在內(nèi)存中都是以指數(shù)形式表示的,分必須小于1如3.14159在內(nèi)存中表示為+ .3141593,數(shù)字部分為.314159,是小于1字符型字符型在內(nèi)存中存儲的是ASCII碼,也是整型,故而可以把字符型賦給整型字符串后面,編譯系統(tǒng)會加個0'作為結(jié)束符符號常量用符號代表一個常量,如 #defi nePI 3.14159在編譯時,系統(tǒng)會把符號常量替換成具體的值且數(shù)字部2.變量變量:程序運行期間,值可變的量 變量名:代表內(nèi)存中的一個存儲單元,在編譯連接時由系統(tǒng)給每一個變量分配一個地址 標(biāo)識符:標(biāo)識實體名字的有效字符序列,字母、數(shù)字、下劃線 常變量:定義變量時加上con

5、st,運行期間值不可變,也即只讀變量區(qū)別#defi ne定義的符號常量與 con st定義的常變量 符號常量只是用一個符號代表一個常量,在編譯時把所有符號常量替換為指定的值,類型,在內(nèi)存中不存在以符號常量命名的存儲單元 常變量具有變量的特征,具有類型,在內(nèi)存中有以它命名的存儲單元,與一般變量不同的是,常變量代表的存儲單元值不可變。它沒有強定義的好處1. 保證變量名使用的正確,不正確會在編譯時報錯2. 每個變量指定為一確定類型,在編譯時就能為其分配存儲單元3. 編譯時即可檢查變量進(jìn)行的運算是否合法。3.運算符 二進(jìn)制位運算&二進(jìn)制按位與1<<>>二進(jìn)制按位或 按位

6、異或 左移位 右移位+ -自加自減運算符+i使用i之前,i先自加 i+使用i之后,i再自加 + -結(jié)合方向為自右向左 例:!x+(i+)+6先取非,再+先i+6,后i+,不管有無括號,都是先運算,再自加先自加,再加6(+i)+6-i+ : i左面是符號運算符,右面是自加運算符,設(shè)i等于3,運算過程相當(dāng)于-(i+),即-i=-3-3+1=-2a = -i+: a 結(jié)果為-3,5-i+ =?答案 2i=1,j=2,則 a = i+j ?i=1,j=2,則 a=i+(+j)?先賦值,再自加;?待測試答案:3因為相當(dāng)于a=(i+)+j;答案:4賦值運算符=的優(yōu)先級小于+ -運算符示例:int arr

7、= 6,7,8,9,10;Sint *ptr = arr;*(p tr+) += 123;prin tf("%d,%d",* ptr,*(+ptr);解:*(ptr+) += 123;相當(dāng)于 *ptr +=123;printf函數(shù)從右向左壓棧,運算順序: cout也是自右向左壓棧。*ptr+;故 arr0 = 129; ptr 指向 arr1+ptr;輸出結(jié)果:8 8逗號運算符又稱順序求值運算符注意逗號運算符優(yōu)先級最低。注:整個逗號表達(dá)式的a = 3*4,a*5 貝 U a=?答案 12?值為 60 (a=3*4=12 , 12*5 =60 ) x=(a=3,6*3) 貝U

8、 x=18x=a=3,6*a 則 x=33.內(nèi)存存儲浮點數(shù)在內(nèi)存里和整數(shù)存儲方式不同float a =1.0f;cout<<(i nt)a=(i nt&a);(int&a)相當(dāng)于把該浮點數(shù)地址開始的sizeof(int)個字節(jié)當(dāng)成int型數(shù)據(jù)輸出,其值并不為1 (int)a顯示轉(zhuǎn)換等于14.類型轉(zhuǎn)換轉(zhuǎn)換本質(zhì):按存儲單元中的存儲形式直接傳送(1)浮點型賦給整型,舍棄小數(shù)部分double型賦給float,防止溢出錯誤(4)為65536.整數(shù)不會變,除非兩個長度不同(int, short, long賦給char,原封不動取低八位signed賦給unsigned,符號位照搬

9、。負(fù)數(shù)以補碼形式存放,-1賦給unsigned int,結(jié)果int,long )發(fā)生截斷5.C+俞入輸出C+俞入輸出包含三個方面的內(nèi)容(1) 對系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入輸出。即從鍵盤輸入、輸出到顯示器屏幕,稱標(biāo)準(zhǔn)輸入 輸出,簡稱標(biāo)準(zhǔn)I/O(2 )以外出磁盤文件為對象進(jìn)行輸入輸出,稱文件I/O(3)對內(nèi)存中指定空間進(jìn)行輸入輸出,通常指定一個字符數(shù)組作為存儲空間,稱字符串輸 入輸出,簡稱串I/O在C+中,輸入輸出流被定義為類。C+的I/O庫中的類稱為流類,用流類定義的對象稱流對象。C+中輸入輸出是調(diào)用輸入輸出流庫中的流對象cin、cout實現(xiàn)的,即I/O不是C+本身定義的,而是編譯系統(tǒng)的I/O庫中

10、定義的。I/O 控制符 #include <iomanip>setprecision(n)設(shè)置精度為 n,十進(jìn)制輸出時,n代表有效數(shù)字位數(shù)包括整數(shù)和小數(shù);fixed (固定小數(shù)位數(shù))和 scientific (指數(shù))形式輸出時,n指小數(shù)位數(shù)(不包括整數(shù)部分)double a = 123.4567890123456cout << a;II十進(jìn)制輸出,輸出123.456默認(rèn)精度為cout<<setprecision(9)<<a;II 十進(jìn)制,輸出 123.456789精度為9cout<<set precisi on( 6);恢復(fù)默認(rèn)精度c

11、out<<setioflags(iOS:fixed)<<a; II 固定位數(shù),123.456789為默認(rèn)的6,此時精度表示小數(shù)位數(shù),精度6.getchar()禾R putchar()cout<<getchar();符讀入的實際是 ASCII碼,故輸出為字符 ASCII碼,97,而非讀入的字cout<<(c=getchar(); / 輸出為字符while(c=getchar()!='n')/循環(huán)讀入字符的控制7.函數(shù)與模版函數(shù)原型:不同具體形參的函數(shù)聲明 如:float add(float,float)主要作用:根據(jù)函數(shù)原型,在程序

12、編譯階段對調(diào)用函數(shù)的合法性進(jìn)行全面檢查。函數(shù)重載: 一項不同,同一函數(shù)名定義的多個函數(shù),這些函數(shù)的參數(shù)個數(shù),參數(shù)類型,參數(shù)順序至少有一個函數(shù)不能既是重載函數(shù),又是帶默認(rèn)參數(shù)的函數(shù)。函數(shù)模版:適用于函數(shù)個數(shù)相同,函數(shù)體相同,而只有類型不同的情況cpp view plain copy01.# in clude <iostream>02.US ing n ames pace std;03.te mp late <typen ame T> / temp late <class T>04.T max(T a, T b, T c)05.06.07.08.09.10.i

13、nt mai n()if(b>a) a = b; if(c>a) a = c; return a;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.變量作用域:變量有效范圍,有四種:文件作用域 file scope函數(shù)作用域function scope塊作用域 block scope函數(shù)原型作用域 function P rotot ype scope遞歸函數(shù):函數(shù)體中,直接或間接調(diào)用函數(shù)本身的函數(shù)。變量的存儲類別:外部、局部(相對于

14、函數(shù)而言)全局變量(也即外部變量)靜態(tài)局部變量(static)自動變量(不加 static的局部變量)從而自動將變量寄存器變量(register)存放在CPU中,而非內(nèi)存中,這樣在使用時就省去了從內(nèi)存中載入 寄存器的過程。但只是建議性的,優(yōu)化編譯系統(tǒng)自動識別使用頻繁的變量, 放入寄存器中。extern聲明的外部變量(本文件中不即提前引用申明,表示該變量是將在下面定義的全局變量或在其它文件中定義 用extern,引用該變量的外部文件用extern進(jìn)行聲明) static聲明的靜態(tài)外部變量只能被本文件使用,而不能被外部文件使用的全局變量,這樣不同文件中的全局變量不會相互干擾,為程序模塊化、通用化提

15、供方便。注:全局變量也是靜態(tài)存儲的。內(nèi)部函數(shù)與外部函數(shù) 內(nèi)部函數(shù):static聲明,文件內(nèi)使用外部函數(shù):另一個文件里 extern聲明,表示是其它文件的函數(shù),extern可以省略宏定義#defi ne PI 3.14定義符號常量#defi ne Area(a,b)a*b/定義函數(shù)功能,下面當(dāng)作函數(shù)來用。#in clude <iostream>'iostream'區(qū)別<>在系統(tǒng)目錄尋找,找不到報錯在當(dāng)前目錄尋找,找不到報錯字符數(shù)組(1) char str = "i am happ y"數(shù)組長度為11,而非10,因為后面有一個0'

16、 char str = 'i','a','m','h',y數(shù)組長度為5,系統(tǒng)不會自動為其在后面加'0'因此,(1),(2)是不同的 輸出字符數(shù)組:cout<<str;string 類 字符數(shù)組是 C中的處理方式,C+中用string類,#include <string>字符串變量中不會存放0',只存放字符串本身,故string str ="hello"的長度為5,要注意。字符串變量存儲的實際是字符串的指針,4個字節(jié), sizeof(stri ng) = 4;str

17、i ng n ame="i","am","ha ppy"sizeof( name) = 3*4 = 12;變量與指針:int *p = &i;int型指針變量,定義時的*只是表示指針類型p是指針變量,其值是變量 i的地址,*p則是存儲單元,*&a與*p同,都表示變量a指向數(shù)組的指針int a10 = ;int *p;p = & a0;/與下面等價,都指向數(shù)組第一個元素,因為數(shù)組名本身就是表示數(shù)組的地址P = a;*p+相當(dāng)于*(p+),先得到*p的值,P再+移到下一個元素 (*p)+則是使*p的值+1二維數(shù)組的

18、指針表示:*(*(P+i)+j)表示ai,jin t (* p)nP為指向含n個元素的數(shù)組的指針int *pn定義指針數(shù)組P函數(shù)指針指向函數(shù)的指針,主要用作形參int max(i nt,i nt);in t (* p)(i nt,i nt);p = max;賦值(地址)p(1,2)/ 調(diào)用引用int a = 10;int &b = a; b是對a的引用引用傳遞,引用型變量作為函數(shù)形參cpp view plain copy01./值會改變02.ma in03. int i=5,j=6;04. swap (i,j)05.06.void swap(int &a, int &b

19、)/這里的&不是“ a的地址",而是指“ a是一個引用型變量”,&是個聲明符07.08.02.int temp; temp = a; a= b; b=te mp;傳遞變量地址:形參是指針變量,實參是變量地址,這種虛實結(jié)合的方法仍然是“值傳遞” 方式,只是實參的值是變量地址而已。cpp view plain copy 01./值會改變 02.mai n() 03. 04.int i=5,j=6; swa p(&i,&j)05.06.07.void swap(int *p 1, int *p2)/這里的*號也只表示是指針類型08.09.1

20、3.int temp; temp = *p1;*p1 = *p2; *p2 = tem p;結(jié)構(gòu)體變量struct作函數(shù)參數(shù)時有三種形式(1 )用結(jié)構(gòu)體變量名作形參這時形參要開辟內(nèi)存單元,實參中全部內(nèi)容通過值傳遞方式一一傳遞給形參,時空開銷大, 效率低(2) 用指向結(jié)構(gòu)體變量的指針作形參,只有四個字節(jié) void printed ( student *p)cout< <p->num;(3) 用結(jié)構(gòu)體變量的引用變量作形參Stude nt stu;prin t(stu);void prin t(Stude nt & stu)cout<stu .num

21、;new delete動態(tài)內(nèi)存分配new類型(初值),返回地址,分配失敗返回NULL float *f = new float(3.14);int *i = new int(6);int *k = new int54;/ 數(shù)組 delete 變量 delete f; delete i;數(shù)組 delete k;Enum枚舉類型聲明枚舉類型enum weekdays un,mon ,tue,wed,thu,fri,sat;定義枚舉變量weekday workday,week_e nd;變量賦值: workday = mon; 或 workday = weekday(2); 枚舉常量對應(yīng)值從 0開始

22、,0, 1, 2, 3.typedef聲明新類型typedef int INTEGER,相當(dāng)于為int起了個別名,下面程序中就可以直接用INTEGER乍int用了主要為了方便系統(tǒng)移植,如long int在VC中4個字節(jié),在 GCC中占8個字節(jié),直接用int的話可能會溢出,用 INTEGER就不用擔(dān)心了,只要把 ypedef int INTEGER聲明語句一改就 行運算符重載方法是定義一個重載運算符的函數(shù),在需要執(zhí)行被重載的運算符時,系統(tǒng)就自動調(diào)用該函數(shù),以實現(xiàn)響應(yīng)運算。即運算符重載是通過定義函數(shù)實現(xiàn)的,運算符重載實際上是函數(shù)重載。格式:函數(shù)類型operator運算符名稱(形參表列)對運算符的重

23、載處理例如:將+用于Complex類(復(fù)數(shù))的加法運算,函數(shù)原型如下:Complex op erator + (Co mp lex& c1, Complex& c2);注:operator是關(guān)鍵字,operator +就是函數(shù)名,可以描述為:函數(shù)operator +重載了運算符+整數(shù)加可以想象為調(diào)用如下函數(shù)int op erator + (int a,i nt b) retur n a+b; cpp view plain copy01.# in clude <iostream>02.US ing n ames pace std;O3.class Comp lex04.05.06.07.08.09.10.public:Compl ex()real=0;imag=0;CompI ex(double r, double r)real=r;imag=i;Comp lex op erator + (Com plex & c2);II 聲明重載運算符的函數(shù)void dis play();private:double rea;double imag;11.12.13. ;14. Complex Complex:operator + (Complex &c2) II 定義重載運算符的函數(shù)15. 16.17.18.Comp lex c;c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論