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

下載本文檔

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

文檔簡(jiǎn)介

...wd......wd......wd...編程入門根基知識(shí)總結(jié)基本知識(shí)程序=算法+數(shù)據(jù)構(gòu)造,算法是對(duì)操作的描述,數(shù)據(jù)構(gòu)造是對(duì)數(shù)據(jù)的描述。偽代碼:pseudocode程序一般包括:〔1〕預(yù)處理命令:#include等〔2〕全局聲明局部〔3〕函數(shù):函數(shù)首部〔聲明〕、函數(shù)體〔局部聲明+執(zhí)行局部〕程序執(zhí)行過(guò)程源程序-->編譯成目標(biāo)程序obj-->連接目標(biāo)程序成可執(zhí)行文件類:數(shù)據(jù)成員+成員函數(shù)命名空間實(shí)際上就是一個(gè)由程序設(shè)計(jì)者命名的內(nèi)存區(qū)域。程序員可以根據(jù)需要指定一些有名字的空間域,把一些全局實(shí)體分別放在各個(gè)命名空間中,從而與其它全局實(shí)體分隔開,解決名字沖突,防止全局命名空間污染。C++庫(kù)的所有標(biāo)識(shí)符〔標(biāo)準(zhǔn)頭文件中函數(shù)、類、對(duì)象、類模版〕都是在std命名空間定義的A的ASCII碼值65a的971.數(shù)據(jù)類型?基本類型:整型、浮點(diǎn)型、字符型、布爾型?構(gòu)造類型:枚舉、數(shù)組、構(gòu)造體類型〔struct〕、公用體〔union〕、類類型?指針類型?引用類型?空類型:nullint4unsignedint4shortint2unsignedshortint2longint4unsignedlongint4char1uchar1float4double8longdouble8無(wú)符號(hào):不用保存符號(hào)位,故比有符號(hào)多了一位有符號(hào):數(shù)值用補(bǔ)碼存放(無(wú)論正負(fù)),最高位為符號(hào)位VC中,longdouble與double字節(jié)數(shù)一樣,故longdouble是無(wú)用的GCC中,longdouble那么有12個(gè)字節(jié)無(wú)負(fù)值的量可以定義為unsignedint,如年齡、學(xué)號(hào)等,以增大存儲(chǔ)范圍。shortint,longint,unsignedint這些類型后面的int可以省略整型表示:十進(jìn)制,后面加L或l八進(jìn)制,前面加0十六進(jìn)制,前面加0x浮點(diǎn)數(shù)表示:默認(rèn)為雙精度型double后面加f或F那么為單精度f(wàn)loat后面加l或L那么為長(zhǎng)精度型longdouble指數(shù)形式數(shù)符數(shù)字局部指數(shù)局部a=3.14e2a=0.314e4a=31.4e1a=3140e-1浮點(diǎn)數(shù),不管是用小數(shù)形式還是指數(shù)形式表示,在內(nèi)存中都是以指數(shù)形式表示的,且數(shù)字局部必須小于1如3.14159在內(nèi)存中表示為+.3141593,數(shù)字局部為.314159,是小于1的字符型字符型在內(nèi)存中存儲(chǔ)的是ASCII碼,也是整型,故而可以把字符型賦給整型字符串后面,編譯系統(tǒng)會(huì)加個(gè)'\0'作為完畢符符號(hào)常量用符號(hào)代表一個(gè)常量,如#definePI3.14159在編譯時(shí),系統(tǒng)會(huì)把符號(hào)常量替換成具體的值2.變量變量:程序運(yùn)行期間,值可變的量變量名:代表內(nèi)存中的一個(gè)存儲(chǔ)單元,在編譯連接時(shí)由系統(tǒng)給每一個(gè)變量分配一個(gè)地址標(biāo)識(shí)符:標(biāo)識(shí)實(shí)體名字的有效字符序列,字母、數(shù)字、下劃線常變量:定義變量時(shí)加上const,運(yùn)行期間值不可變,也即只讀變量區(qū)別#define定義的符號(hào)常量與const定義的常變量符號(hào)常量只是用一個(gè)符號(hào)代表一個(gè)常量,在編譯時(shí)把所有符號(hào)常量替換為指定的值,它沒有類型,在內(nèi)存中不存在以符號(hào)常量命名的存儲(chǔ)單元常變量具有變量的特征,具有類型,在內(nèi)存中有以它命名的存儲(chǔ)單元,與一般變量不同的是,常變量代表的存儲(chǔ)單元值不可變。強(qiáng)定義的好處1.保證變量名使用的正確,不正確會(huì)在編譯時(shí)報(bào)錯(cuò)2.每個(gè)變量指定為一確定類型,在編譯時(shí)就能為其分配存儲(chǔ)單元3.編譯時(shí)即可檢查變量進(jìn)展的運(yùn)算是否合法。3.運(yùn)算符二進(jìn)制位運(yùn)算&二進(jìn)制按位與|二進(jìn)制按位或^按位異或<<左移位>>右移位++--自加自減運(yùn)算符++i使用i之前,i先自加i++使用i之后,i再自加++--結(jié)合方向?yàn)樽杂蚁蜃罄?x++先取非,再++(i++)+6先i+6,后i++,不管有無(wú)括號(hào),都是先運(yùn)算,再自加(++i)+6先自加,再加6-i++:i左面是符號(hào)運(yùn)算符,右面是自加運(yùn)算符,設(shè)i等于3,運(yùn)算過(guò)程相當(dāng)于-(i++),即-i=-3-3+1=-2a=-i++:a結(jié)果為-3,先賦值,再自加;5-i++=答案2?待測(cè)試i=1,j=2,那么a=i+++j答案:3因?yàn)橄喈?dāng)于a=(i++)+j;i=1,j=2,那么a=i+(++j)答案:4賦值運(yùn)算符=的優(yōu)先級(jí)小于++--運(yùn)算符例如:intarr[]={6,7,8,9,10};sint*ptr=arr;*(ptr++)+=123;printf("%d,%d",*ptr,*(++ptr));解:*(ptr++)+=123;相當(dāng)于*ptr+=123;*ptr++;故arr[0]=129;ptr指向arr[1]printf函數(shù)從右向左壓棧,運(yùn)算順序:++ptr;輸出結(jié)果:88cout也是自右向左壓棧。逗號(hào)運(yùn)算符又稱順序求值運(yùn)算符a=3*4,a*5那么a=?答案12注意逗號(hào)運(yùn)算符優(yōu)先級(jí)最低。注:整個(gè)逗號(hào)表達(dá)式的值為60〔a=3*4=12,12*5=60〕x=(a=3,6*3)那么x=18x=a=3,6*a那么x=33.內(nèi)存存儲(chǔ)浮點(diǎn)數(shù)在內(nèi)存里和整數(shù)存儲(chǔ)方式不同floata=1.0f;cout<<(int)a==(int&a);(int&a)相當(dāng)于把該浮點(diǎn)數(shù)地址開場(chǎng)的sizeof(int)個(gè)字節(jié)當(dāng)成int型數(shù)據(jù)輸出,其值并不為1(int)a顯示轉(zhuǎn)換等于14.類型轉(zhuǎn)換轉(zhuǎn)換本質(zhì):按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送〔1〕浮點(diǎn)型賦給整型,舍棄小數(shù)局部〔2〕double型賦給float,防止溢出錯(cuò)誤〔3〕int,short,long賦給char,原封不動(dòng)取低八位〔4〕signed賦給unsigned,符號(hào)位照搬。負(fù)數(shù)以補(bǔ)碼形式存放,-1賦給unsignedint,結(jié)果為65536.整數(shù)不會(huì)變,除非兩個(gè)長(zhǎng)度不同〔int,long〕發(fā)生截?cái)?.C++輸入輸出C++輸入輸出包含三個(gè)方面的內(nèi)容〔1〕對(duì)系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入輸出。即從鍵盤輸入、輸出到顯示器屏幕,稱標(biāo)準(zhǔn)輸入輸出,簡(jiǎn)稱標(biāo)準(zhǔn)I/O〔2〕以外出磁盤文件為對(duì)象進(jìn)展輸入輸出,稱文件I/O〔3〕對(duì)內(nèi)存中指定空間進(jìn)展輸入輸出,通常指定一個(gè)字符數(shù)組作為存儲(chǔ)空間,稱字符串輸入輸出,簡(jiǎn)稱串I/O在C++中,輸入輸出流被定義為類。C++的I/O庫(kù)中的類稱為流類,用流類定義的對(duì)象稱流對(duì)象。C++中輸入輸出是調(diào)用輸入輸出流庫(kù)中的流對(duì)象cin、cout實(shí)現(xiàn)的,即I/O不是C++本身定義的,而是編譯系統(tǒng)的I/O庫(kù)中定義的。I/O控制符#include<iomanip>setprecision(n)設(shè)置精度為n,十進(jìn)制輸出時(shí),n代表有效數(shù)字位數(shù)包括整數(shù)和小數(shù);fixed〔固定小數(shù)位數(shù)〕和scientific〔指數(shù)〕形式輸出時(shí),n指小數(shù)位數(shù)〔不包括整數(shù)局部〕doublea=123.4567890123456cout<<a;//十進(jìn)制輸出,輸出123.456默認(rèn)精度為6cout<<setprecision(9)<<a;//十進(jìn)制,輸出123.456789精度為9cout<<setprecision(6);//恢復(fù)默認(rèn)精度cout<<setioflags(iOS::fixed)<<a;//固定位數(shù),123.456789,此時(shí)精度表示小數(shù)位數(shù),精度為默認(rèn)的66.getchar()和putchar()cout<<getchar();//讀入的實(shí)際是ASCII碼,故輸出為字符ASCII碼,97,而非讀入的字符cout<<(c=getchar());//輸出為字符while((c=getchar())!='\n'){}//循環(huán)讀入字符的控制7.函數(shù)與模版函數(shù)原型:不同具體形參的函數(shù)聲明如:floatadd(float,float)主要作用:根據(jù)函數(shù)原型,在程序編譯階段對(duì)調(diào)用函數(shù)的合法性進(jìn)展全面檢查。函數(shù)重載:同一函數(shù)名定義的多個(gè)函數(shù),這些函數(shù)的參數(shù)個(gè)數(shù),參數(shù)類型,參數(shù)順序至少有一項(xiàng)不同,一個(gè)函數(shù)不能既是重載函數(shù),又是帶默認(rèn)參數(shù)的函數(shù)。函數(shù)模版:適用于函數(shù)個(gè)數(shù)一樣,函數(shù)體一樣,而只有類型不同的情況[cpp]viewplaincopy01.#include<iostream>02.usingnamespacestd;03.template<typenameT>//template<classT>04.Tmax(Ta,Tb,Tc)05.{06.if(b>a)a=b;07.if(c>a)a=c;08.returna;09.}10.intmain()11.{12.inta=1,b=2,c=3;13.cout<<T(a,b,c);14.floatd=1.1,e=2.2,f=3.3;15.cout<<T(d,e,f);16.}變量作用域:變量有效范圍,有四種:文件作用域filescope函數(shù)作用域functionscope塊作用域blockscope函數(shù)原型作用域functionprototypescope遞歸函數(shù):函數(shù)體中,直接或間接調(diào)用函數(shù)本身的函數(shù)。變量的存儲(chǔ)類別:外部、局部〔相對(duì)于函數(shù)而言〕全局變量〔也即外部變量〕靜態(tài)局部變量〔static〕自動(dòng)變量〔不加static的局部變量〕存放器變量〔register〕存放在CPU中,而非內(nèi)存中,這樣在使用時(shí)就省去了從內(nèi)存中載入存放器的過(guò)程。但只是建議性的,優(yōu)化編譯系統(tǒng)自動(dòng)識(shí)別使用頻繁的變量,從而自動(dòng)將變量放入存放器中。extern聲明的外部變量即提前引用申明,表示該變量是將在下面定義的全局變量或在其它文件中定義〔本文件中不用extern,引用該變量的外部文件用extern進(jìn)展聲明〕static聲明的靜態(tài)外部變量只能被本文件使用,而不能被外部文件使用的全局變量,這樣不同文件中的全局變量不會(huì)相互干擾,為程序模塊化、通用化提供方便。注:全局變量也是靜態(tài)存儲(chǔ)的。內(nèi)部函數(shù)與外部函數(shù)內(nèi)部函數(shù):static聲明,文件內(nèi)使用外部函數(shù):另一個(gè)文件里extern聲明,表示是其它文件的函數(shù),extern可以省略宏定義#definePI3.14定義符號(hào)常量#defineArea(a,b)a*b//定義函數(shù)功能,下面當(dāng)作函數(shù)來(lái)用。#include<iostream>'iostream'區(qū)別<>在系統(tǒng)目錄尋找,找不到報(bào)錯(cuò)''在當(dāng)前目錄尋找,找不到報(bào)錯(cuò)字符數(shù)組(1)charstr[]="iamhappy";數(shù)組長(zhǎng)度為11,而非10,因?yàn)楹竺嬗幸粋€(gè)'\0'(2)charstr[]={'i','a','m','h','y'}數(shù)組長(zhǎng)度為5,系統(tǒng)不會(huì)自動(dòng)為其在后面加'\0'因此,(1),(2)是不同的輸出字符數(shù)組:cout<<str;string類字符數(shù)組是C中的處理方式,C++中用string類,#include<string>字符串變量中不會(huì)存放'\0',只存放字符串本身,故stringstr="hello";的長(zhǎng)度為5,要注意。字符串變量存儲(chǔ)的實(shí)際是字符串的指針,4個(gè)字節(jié),sizeof(string)=4;stringname[]={"i","am","happy"};sizeof(name)=3*4=12;變量與指針:int*p=&i;//int型指針變量,定義時(shí)的*只是表示指針類型p是指針變量,其值是變量i的地址,*p那么是存儲(chǔ)單元,*&a與*p同,都表示變量a指向數(shù)組的指針inta[10]={};int*p;p=&a[0];//與下面等價(jià),都指向數(shù)組第一個(gè)元素,因?yàn)閿?shù)組名本身就是表示數(shù)組的地址p=a;**************************p++相當(dāng)于*(p++),先得到*p的值,p再++移到下一個(gè)元素(*p)++那么是使*p的值+1二維數(shù)組的指針表示:*(*(p+i)+j)表示a[i,j]*************************int(*p)[n]p為指向含n個(gè)元素的數(shù)組的指針int*p[n]定義指針數(shù)組P函數(shù)指針指向函數(shù)的指針,主要用作形參intmax(int,int);int(*p)(int,int);p=max;賦值〔地址〕p(1,2)//調(diào)用引用inta=10;int&b=a;b是對(duì)a的引用引用傳遞,引用型變量作為函數(shù)形參[cpp]viewplaincopy01.//值會(huì)改變02.main{03.inti=5,j=6;04.swap(i,j)05.}06.voidswap(int&a,int&b)//這里的&不是“a的地址〞,而是指“a是一個(gè)引用型變量〞,&是個(gè)聲明符07.{08.inttemp;09.temp=a;10.a=b;11.b=temp;12.}傳遞變量地址:形參是指針變量,實(shí)參是變量地址,這種虛實(shí)結(jié)合的方法仍然是“值傳遞〞方式,只是實(shí)參的值是變量地址而已。[cpp]viewplaincopy01.//值會(huì)改變02.main()03.{04.inti=5,j=6;05.swap(&i,&j)06.}07.voidswap(int*p1,int*p2)//這里的*號(hào)也只表示是指針類型08.{09.inttemp;10.temp=*p1;11.*p1=*p2;12.*p2=temp;13.}構(gòu)造體變量struct作函數(shù)參數(shù)時(shí)有三種形式〔1〕用構(gòu)造體變量名作形參這時(shí)形參要開辟內(nèi)存單元,實(shí)參中全部?jī)?nèi)容通過(guò)值傳遞方式一一傳遞給形參,時(shí)空開銷大,效率低〔2〕用指向構(gòu)造體變量的指針作形參,只有四個(gè)字節(jié)voidprinted〔student*p){cout<<p->num;}〔3〕用構(gòu)造體變量的引用變量作形參Studentstu;print(stu);voidprint(Student&stu){cout<stu.num;}newdelete動(dòng)態(tài)內(nèi)存分配new類型(初值),返回地址,分配失敗返回NULLfloat*f=newfloat(3.14);int*i=newint(6);int*k=newint[5][4];//數(shù)組delete變量deletef;deletei;數(shù)組delete[]k;Enum枚舉類型聲明枚舉類型enumweekday{sun,mon,tue,wed,thu,fri,sat};定義枚舉變量weekdayworkday,week_end;變量賦值:workday=mon;或workday=weekday(2);枚舉常量對(duì)應(yīng)值從0開場(chǎng),0,1,2,3..typedef聲明新類型typedefintINTEGER,相當(dāng)于為int起了個(gè)別名,下面程序中就可以直接用INTEGER作int用了主要為了方便系統(tǒng)移植,如longint在VC中4個(gè)字節(jié),在GCC中占8個(gè)字節(jié),直接用int的話可能會(huì)溢出,用INTEGER就不用擔(dān)憂了,只要把ypedefintINTEGER聲明語(yǔ)句一改就行運(yùn)算符重載方法是定義一個(gè)重載運(yùn)算符的函數(shù),在需要執(zhí)行被重載的運(yùn)算符時(shí),系統(tǒng)就自動(dòng)調(diào)用該函數(shù),以實(shí)現(xiàn)響應(yīng)運(yùn)算。即運(yùn)算符重載是通過(guò)定義函數(shù)實(shí)現(xiàn)的,運(yùn)算符重載實(shí)際上是函數(shù)重載。格式:函數(shù)類型operator運(yùn)算符名稱(形參表列){對(duì)運(yùn)算符的重載處理}例如:將+用于Complex類〔復(fù)數(shù)〕的加法運(yùn)算,函數(shù)原型如下:Complexoperator+(Complex&c1,Complex&c2);注:operator是關(guān)鍵字,operator+就是函數(shù)名,可以描述為:函數(shù)operator+重載了運(yùn)算符+整數(shù)加可以想象為調(diào)用如下函數(shù)intoperator+(inta,intb){returna+b;}[cpp]viewplaincopy01.#include<iostream>02.usingnamespacestd;03.classComplex04.{05.public:06.Complex(){real=0;imag=0;}07.Complex(doubler,doubler){real=r;imag=i;}08.Complexoperator+(Complex&c2);//聲明重載運(yùn)算符的函數(shù)09.voiddisplay();10.private:11.doublerea;12.doubleimag;13.};14plexComplex::operator+(Complex

溫馨提示

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

評(píng)論

0/150

提交評(píng)論