C++概述:功能函數(shù)數(shù)據(jù)類型.doc_第1頁
C++概述:功能函數(shù)數(shù)據(jù)類型.doc_第2頁
C++概述:功能函數(shù)數(shù)據(jù)類型.doc_第3頁
C++概述:功能函數(shù)數(shù)據(jù)類型.doc_第4頁
C++概述:功能函數(shù)數(shù)據(jù)類型.doc_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C+簡明提要C+數(shù)據(jù)類型C+運算符C+類C+語句C+庫函數(shù)C+常用的其它函數(shù) 羅偉 2001年月1日 C+數(shù)據(jù)類型數(shù)據(jù)類型 說 明數(shù)值范圍 示 例bool布爾類型值true或falsebool Myb1,Myb2; Myb1=true; Myb2=iText=fun1(25.8);數(shù)組初始化使用局部靜態(tài)變量定義只有在定義全局變量或局部靜態(tài)變量時才能對數(shù)組初始化static int a5=0,1,2,3,4;static int b23=00,01,02,10,11,12;static char str14=a,b,c,0;static char str1=abc;類型強制轉(zhuǎn)換傳統(tǒng)C中格式:int i=8; float x=(float)i;C+支持左格式int i=5; float f; f=float(i);char str1=3.1415; double d; d=double(str1);union無名聯(lián)合中定義的變量共享一內(nèi)存unionint I; float f1;char str18;/則各種類型變量共享一內(nèi)存;可直接存取I=20; f1=3.14;類型名 &定義引用(引用變量是被引用變量的別名,它們共占一個內(nèi)存)(引用實際是一和隱式指針,引用變量時.可以不寫指針運算符*)改動其中一個變量值將影響另一個值int k; int &j=k;int *p1=&k; int &p2=k;k=30;Edit1-Text=j; /j值此時為30;Edit2-Text=*p1; /*p1值為30;Edit3-Text=p2; /p2值為30;String(系統(tǒng)類)定義字符串變量可直接加String str110,str210,str330;*str1=abc; *str2=def; *str3=*str1+*str2;Edit1-Text=*str3;數(shù)據(jù)類型 說 明數(shù)值范圍 示 例C+運算符表示符號說 明 示 例+ - * /加減乘除int Sum; int x=2; int y=3; Sum=x*(x+y);%求兩整數(shù)的模int I=11; k=3; int Mod; Mod=I%k; (Mod值為2)&邏輯與if (I10) & (kb)?a:b /max值為5,逗號運算符int max; max=(a=3*5,a*4),a+6 /自左向右,max值為66 = 指針類成員運算符class aprivate: x,y; public:fun1(); float z; /定義類a a b,*p; /定義b和*p 兩個對象.非指針類成員運算符b.z=5.2; /對象b為指針類型對象,用.p-fun1; /對象p為指針類型對象,用-:作用域運算符int pk; sub1()int pk=2; :pk=5; /加了:為改變?nèi)肿?量pk值,函數(shù)sub1()中的同名局部變量值保持原值2*指針變量運算符詳指針頁&取地址運算符詳指針頁.*-*類析構(gòu)函數(shù)前綴class a; a:a().operation+()運算符重載(加法)運算符重載可用于實現(xiàn)類的對象直接相加減等;class com; /定義類comcom a,b totle; /定義類的三個對象a,b和totle;com operation+(com c,com d )com temp; temp.real=c.real+d.real; /real及imag temp.imag=c.imag+d.imag; / 為類中成員return temp ; 之后就可以使用 totle=a+b; 或total=opetator+(a,b);operation-()運算符重載(減法)operation*()運算符重載(乘法)operation/()運算符重載(除法)operationtext=obj1.pusub1(3,abc);Edit2-text=obj3-pusub1(3,abc); /對象不能引用類中的私有成員,只有類定義中的公有成員才能引用. 構(gòu)造函數(shù)類名(參數(shù)表) 函數(shù)體.(主要是初始化類中的原始數(shù)據(jù))/在類中構(gòu)造函數(shù)可以系統(tǒng)自行生成(為空),構(gòu)造函數(shù)必需同類名一樣.構(gòu)造函數(shù)可以不帶參數(shù).若類cir 的構(gòu)造函數(shù)定義為:cir:cir(int a,int b;char *s)k=a; d=b;str=new charstrlen(s)+1; strcpy(str,s);int main()cir obj4(2,4.5,abc);. /對象obj4被定義的同時也初始化將其私有成員k和d值初始化為2和4.5析構(gòu)函數(shù)類名(參數(shù)表) 函數(shù)體.(主要是當(dāng)對象撤消時作一些處理工作,如變量所占內(nèi)存等);cir:cir()delete str; /當(dāng)對象撤消時,清除對象中的變量*str所占內(nèi)存重載構(gòu)造函數(shù)一個類中可以定義幾個所帶參數(shù)不同的構(gòu)造函數(shù),以便適應(yīng)不同情況;class Aprivate:.public:A(); /不帶參數(shù)的類A(int); /帶一個整形參數(shù)的類A(float); /帶一個浮點參數(shù)的類A(int,double,char); /帶三個參數(shù)的類若定義對象: obj6(3.14); 則系統(tǒng)自動調(diào)用帶一個浮點參數(shù)的構(gòu)造函數(shù)進行初始化,其它不起作用.拷貝構(gòu)造函數(shù)類名(const 類名 &對象引用名)依據(jù)已存在的對象建立一個新對象,(將原對象各成員逐域拷貝到新對象中)系統(tǒng)自動有缺省的函數(shù)(對象拷貝 后成員完全相同)cir:cir(const cir &p)k=2*p.k; d=2*p.d;cir obj7(2,3,abc);cir obj8(obj7); /或cir obj8=obj7;/則對象obj8中中的私有成員k=4,d=6 其余同obj7對象成員完全一樣.對象數(shù)組類名 對象名數(shù)量cir obj93;float f3;for (I=0;Ipusub1(80,b);友元函數(shù)(一般函數(shù)作友元)友元函數(shù)可以訪問類中的私有成員在類外定義,不能加:符號class Aprivate: int x; float y;public:friend void fr1(A &); /聲名友元函 .; 數(shù)void fr1(A &P)x=2*x;友元成員(一個類的成員函數(shù)作為另一個類的友元)class Avoid fr1(B &);class B.friend void A:fri(B &); ;void A:fr1(B &P)countP.(類中的成員);派生類(可訪問基類中的保護成員)class 派生類名:派生方式 基類名派生類新增的數(shù)據(jù)成員及成員函數(shù);/派生類具有基類的所有成員并新增了自定義新的成員派生方式:private 或publicpublic(公有派生)時,基類中的所有公有成員在派生類中也是公有的private(私有派生)時,基類中的所有公有成員只能成為派生類中的私有成員.無論何種派生,基類中的私有成員既不允許外部函數(shù)訪問,也不允許派生類中的成員函數(shù)訪問.class BASEprivate: int x;public: void setx(int n) x=n; ;class A:private BASEprivate : int y;public: void setxy(int n) setx(n);y=n; ;class B:public BASEprivate : int z;public :void setxyz(int n)setx(n);y=2*n;多重繼承class C:public BASE,private A;C+語句說明 格 式 示 例if 語句格式1:if (邏輯表達式) 語句格式2:if () 語句; else if () 語句; else if () 語句n; else 語句n+1;格式:if () if () 語句; else 語句; else 語句3;if (x=b) t=a;a=b;b=t;else a=b=0; printf(“error!”) switch語句switch (表達式)case 值: ;break; case 值: ;break; default: ;break; /表達式可以是數(shù)字,字符等類型;int a=3; int b=2; int c; m=a-b;switch (m)case 0: printf(“m=0”);break; case 1: printf(“m=1”);break; default : char str1=“China”;switch (str1)case “USA”; . case “China”; .while循環(huán)語句while (表達式)語句; continue; /結(jié)束本次循環(huán) break; /退出本層循環(huán) int I,Sum=0; I=1;while (I=100) Sum=Sum+I; I+;do while語句do 語句; continue; /結(jié)束本次循環(huán) break; /退出本層循環(huán) while (表達式);int I,Sum=0; I=1;do Sum=Sum+I; I+; while (I=100);for語句continuebreak語句for(表達式;表達式;表達式) 語句1; ; continue; /結(jié)束本次循環(huán) break; /退出本層循環(huán) for (k=1;k=100;k+) Sum=Sum+k;for (k=1,n=1,k+nText=x;#endif/若變量DEBUG1被定義了在文本框中顯示內(nèi)存變量x的值,用于調(diào)試程序,不用時,只需刪除#define DEBUG1 1 語句C+庫函數(shù)(數(shù)學(xué)函數(shù)): #include 或#include 名 稱 說 明 示 例(返回值) 示 例 值acos(弧度數(shù))求反余弦函數(shù)值1.0471975asin(弧度數(shù))求反正弦函數(shù)值cont”asin(0.5)=”asin(0.5)edl;0.5235687atan(弧度數(shù))求反余切函數(shù)值cont”atan(1)=”atan(1)n;0.7853981atan2(Y,X)同atan()contatan2(3.4,34)endl;0.7853981cos(弧度數(shù))求余弦函數(shù)值contacos(1.0471975);0.5cosh(弧度數(shù))求雙曲余弦函數(shù)值contcosh()ceil(浮點數(shù))上舍入返回最小整數(shù).double dou1=3.14; int k;k=ceil(dou1); contk;4exp(浮點數(shù)d)計算e的d次方冪contexp(1);2.71828abs(整數(shù)值)labs(整數(shù)值)fabs(整數(shù)值)求整型數(shù)的絕對值求長整型數(shù)的絕對值求浮點數(shù)的絕對值int k=-2; contabs(k);long l=-3663763; contlabs(l);double f=-3.7367836 ; contfabs(f);236637633.736836floor(浮點數(shù))下舍入返回最小整數(shù).double dou1=3.94; int k;k=floor(dou1); contk;3fmod(x,y)返回x/y的余數(shù)contfmod(7.6,2.5)endl;0.1frexp(val,eptr)double valint *eptr/該函數(shù)返回尾數(shù)x, 0.5x1把雙精度數(shù)val分解為尾數(shù)x和以2為底的指數(shù),即val=x*2的n次冪,并把n存放在eptr指向的變量中。/返回數(shù)字部份xint exp; double x;double x=frexp(48,&exp);cont”尾數(shù)為”xendl;cont”指數(shù)為”expendl;尾數(shù)為:0.75指數(shù)為:6/即48=0.75* 26log(浮點數(shù)x)求ln(x)的值contlog(2.71828);1log10(浮點數(shù)x)求log10(x)的值contlog10(100);2modf(val,iptr)double valdouble *iptr/該函數(shù)返回val的小數(shù)部份。把雙精度數(shù)val分解為整數(shù)部份和小數(shù)部份,把整數(shù)部份存到iptr指向的單元。/返回val的小數(shù)部份double d;double f=modf(3.1415926,&d);cont”f=”fendl;cont”d=”dendl;0.14159263pow(x,y)double x;couble y;計算x的y次冪。contpow(7,2);49sin(x)計算sin(x)值.contsin(1); /x為弧度值0.841471sinh(x)計算x的雙曲正弦值.contsinh(1);sqrt(x)計算x的平方根值contsqrt(49); /x大于07tan(x)計算tan(x)值.conttan(0.785398); /相當(dāng)于tan(PI/4)1tanh(X)計算x的雙曲正切值.conttanh(0.785398);C+庫函數(shù)(字符函數(shù)): #include 名 稱 說 明 示 例(返回值) 示 例 值isalnum(ch)int ch;檢查ch是否是字母或數(shù)字./是字母或數(shù)字返回1,否則返回0;contisalnum(+);0isalpha(ch)int ch;檢查ch是否是字母/是字母返回1,否則返回0contisalpha(6);相當(dāng)于contisalpha(54);0iscntrl(ch)int ch;檢查ch是否是控制字符(ASCII碼在0至0x1F之間)/是返回1,否則返回0contiscntrl(46);1isdigit(ch)int ch;檢查ch 是否是數(shù)字(0至9)/是返回1,否則返回0contisdigit(48); /48的ASCII碼是481isgraph(ch)int ch;檢查ch是否是可打印字符(ASCII碼在0x20至0x7E之間)(不含空格)/是返回1,否則返回0contisgraph(7);0islower(ch)int ch;檢查ch是否是小寫字母。/是返回1,否則返回0contislower(A);0isprint(ch)int ch;檢查ch是否是可打印字符(ASCII碼在0x20至0x7E之間)(含空格)/是返回1,否則返回0contisgraph(32); /32為空格的ASCII碼1ispunct(ch)int ch;檢查ch是否是字標(biāo)點字符。(不含空格)/是返回1,否則返回0contispunct();1isspace(ch)int ch;檢查ch是否是空格,跳格符,回車換行符/是返回1,否則返回0contisspace(13); /13為回車符的ASCII碼1isupper(ch)int ch;檢查ch是否是小寫字母。/是返回1,否則返回0contisupper(A);1isxdigit(ch)int ch;檢查ch是否是一個16進制數(shù)學(xué)字符(0至9,或A至F,或a至f )/是返回1,否則返回0contisdigit(A);0C+庫函數(shù)(字符串函數(shù)): #include 名 稱 說 明 示 例(返回值) 示 例 值strcat()/函數(shù)原型說明char*strcat(char *str1,char *str2)把str2字符串接到str1字符串后面。str1字符串最后面的0取消。 char *str3;static char str1=“STR1的字符內(nèi)容_”;static char str1=“STR2的字符內(nèi)容*”;str3=strcat(str1,str2);contstr3;STR1的字符內(nèi)容_ STR2的字符內(nèi)容*strchr()/函數(shù)原型說明char*strchr(char *str1,int ch)找出str指向的字符串中第一次出現(xiàn)字符ch的位置/返回指向該位置的指針,如找不到,返回空指針。static char str1=“ABCD1234”;int *p;p=strchr(str1,D);contp;D1234strcmp()/函數(shù)原型說明int strcmp(char *str1,char *str2)比較兩個字符串str1,str2/若str1str2返回正數(shù)static char str1=“密碼1234”;static char str2=“密碼1234”;if (strcmp(str1,str2)=0 cont”密碼正確”; /注意比較兩個字符串是否相等時不能用if (str1=str2)之類,但可以比較單字符.密碼正確strcpy()/函數(shù)原型說明int *strcpy(char *str1,char *str2)把str2指向的字符串拷貝到字符串str1中去.(連同str2后面的0一同拷貝過去)/返回str1; str1的長度應(yīng)大于str2的長度。static char str110,str35;static char str2=“要拷貝的字符串.”;contstrcpy(str1,str2);contstrcpy(str1,”China”);contstrcpy(str3,str2,3); /或用strncpy(,)/注意不能用賦值語句將一個字符串常量或字符數(shù)組直接賦給一個字符數(shù)組。如:str1=str2; /是錯誤的。但可以用String 來定義字符串類型數(shù)據(jù)完成+操作;如String str1,str2; str1=str1+str2;要拷貝的字符串.China要拷貝strlen()/函數(shù)原型說明unsign int strlen(char *str1)統(tǒng)計字符串str1中字符的個數(shù)(不包括終止符0)int N;static char str1=“AB12羅偉”;contstrlen(str1);/中文字符占2個字節(jié)8strstr()/函數(shù)原型說明char *strstr(char *str1,char *str2)找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2字符串終止符0)/返回該位置的指針,如找不到,返回空指針。static char str1=“ABCD1234:”;static char str2=“CD”;char *str3;str3=strstr(str1,str2);contstr3endl;/本函數(shù)對中文無效返回空指針。CD1234tolower(ch)int ch;將ch單字符轉(zhuǎn)換為小寫字符char ch=B;conttolower(ch);btoupper(ch)int ch;將ch單字符轉(zhuǎn)換為大寫字符.char ch=98;conttoupper(ch);Bstrlwr(*str1)將字符串str1中的大寫字符轉(zhuǎn)為小寫字符static char str1=AbCDef123contstrlwr(str1)abcdef123strupr(*str1)將字符串str1中的小寫字符轉(zhuǎn)為大寫字符static char str1=AbCDef123contstrlwr(str1)ABCDEF123C庫函數(shù)(輸入輸出函數(shù))(C+也可用): #include 名 稱 說 明 示 例(返回值) 示 例 值 String 字符串 變量名定義字任串變量名,以便完成諸如字符串的直接相加運算,而不必用strcpy()函數(shù)。 C庫函數(shù)(輸入輸出函數(shù))(C+也可用): #include 名 稱 說 明 示 例(返回值) 示 例 值abort()異常終止一個程序if (error) abort(); /比exit(0);更徹底clearerr(fp)fclose(fp)關(guān)閉文件流fpFILE *fp;fp=fopen(“c:readme.txt”,”rw+”); fclose(fp);feof(FILE *fp )檢查文件是否結(jié)束FILE *stream;stream = fopen(DUMMY.FIL, r);fgetc(stream); if (feof(stream) printf(文件指針在尾部n); fclose(stream);fopen(fname,mode)/函數(shù)原型FILE *fopen(const char *fname,const char *mode)fname:文件名n:打開方式/FILE *fp;/fp=fopen(“c:win98 win.ini”,”rb”;/打開一個文件,并返回一個與文件流相關(guān)聯(lián)的指針.參數(shù)mode用以下值:“r” 打開文本文件 用于只讀“w” 創(chuàng)建新的文件用于只寫(或文件已存在則覆蓋)“a” 打開文本文件用于添加內(nèi)容到文件尾部“rb” 打開二進制文件用于只讀FILE *fp; char fspec81;printf (“請輸入一個文件名:n”);gets(fspec); fp=fopen(fspec,”r”);if (fp=NULL) printr(“不能打開文件 %Sn”,fspec);exit(1); /以fp來進行文件操作。“wb” 創(chuàng)建新的二進制文件用于只寫“ab” 找開二進制文件用于添加“r+” 打開已存在的文本文件用于更新 (讀或?qū)?“w+” 創(chuàng)建新的文本文件用于更新“a+” 打開文本文件用于更新“rb+” 打開二進制文件用于更新“wb+” 創(chuàng)建新的二進制文件用于更新“ab+” 打開二進制文件用于更新當(dāng)文件用于更新(讀或?qū)?時,若文件已存在,則文件被打開,若文件不存在,則創(chuàng)建該新文件.freopet(fname,mode,fp)同fopen()函數(shù),但它首先關(guān)閉文件流fptmpfile()以二進制讀寫方式打開一個臨時文件,當(dāng)文件被關(guān)閉或程序終止時,文件被自動刪除。#include #include int main(void) FILE *tempfp; tempfp = tmpfile(); if (tempfp) printf(臨時文件被創(chuàng)建n); else printf(不能創(chuàng)建臨時文件n); exit(1); return 0;fflush(fp)刷新輸出流fp并立即將輸出發(fā)送到物理設(shè)備。調(diào)用成功返回0;發(fā)生錯誤時返回EOFfwrite(msg, strlen(msg), 1, stream);clrscr();printf(按任一鍵立即顯示ABC.TXT文件:); getch(); flush(stream);fprintf(fp,fmt,)將格式串輸出到流fp返回所輸出的字節(jié)數(shù).#include int main(void) FILE *stream; int i = 100; char c = C; float f = 1.234; stream = fopen(ABC.TXT, w+); fprintf(stream, %d %c %f, i, c, f); fclose(stream); return 0;/文本文件ABC.TXT內(nèi)容100 C 1.234fputc()/函數(shù)原型int fputc(char ch,FILE *fp)將字符ch輸出fp指向的文件中.返回所輸出的字節(jié)數(shù),發(fā)生錯誤返回EOFint main(void) char msg = Hello world; int i = 0; while (msgi) fputc(msgi, stdout); i+; /stdout為標(biāo)準(zhǔn)輸出設(shè)備 return 0; /或文件名fwrite(p,size,n,fp)/函數(shù)原型fwrite(char *p,unsigned size,unsigned n,FILE *fp)把p所指向的n*size個字節(jié)輸出到fp所指向的文件中struct mystruct /定義結(jié)構(gòu)mystruct int i; char ch;int main(void) FILE *stream; struct mystruct s; /定義結(jié)構(gòu)變量s if (stream = fopen(TEST.$, wb) = NULL) fprintf(stderr, 不能打開文件.n); return 1; s.i = 0; s.ch = A; /寫結(jié)構(gòu)到文件TEST.$中 fwrite(&s, sizeof(s), 1, stream); fclose(stream); return 0; putc(ch,fp)把一個字符ch輸出到fp所指的文件中fgetc(fp)從fp指向的文件中取得下一個字符int main(void) FILE *stream; char string = 這是一個測試; char ch; stream = fopen(DUMMY.FIL, w+); fwrite(string, strlen(string), 1, stream); /* 搜尋文件的開頭 */ fseek(stream, 0, SEEK_SET); do /* 從這個文件中讀一個字符*/ ch = fgetc(stream); /*顯示這個字符 */ putch(ch); while (ch != EOF); fclose(stream); return 0;fgets()/函數(shù)原型char fgets(char *s,int n,FILE *fp)從fp指向的文件讀取一個長度為(n-1)的字符串,存入起始地址為s的空間.int main(void) FILE *stream; char string = 這是一個測試; char msg20; stream = fopen(DUMMY.FIL, w+); fwrite(string, strlen(string), 1, stream); fseek(stream, 0, SEEK_SET); /* 從文件中讀一個字符串*/ fgets(msg, strlen(string)+1, stream); printf(%s, msg); fclose(stream); return 0;fread()/函數(shù)原型int fread(char *p,unsigned size,unsigned n,FILE *fp)將fp所指定的文件中讀取長度為size的n個數(shù)據(jù)項,存到p所指向的內(nèi)存區(qū).int main(void) FILE *stream; char msg = 這是一個測試; char p20; if (stream = fopen(DUMMY.FIL, w+) = NULL) fprintf(stderr, 不能打開文件 .n); return 1; /* 寫一些數(shù)據(jù)到文件 */ fwrite(msg, strlen(msg)+1, 1, stream); fseek(stream, SEEK_SET, 0); fread(p, strlen(msg)+1, 1, stream); printf(%sn, buf); fclose(stream); return 0; fscanf()/函數(shù)原型int fscanf(FILE *fp,char fmt,args )向fp指定的文件中按fmt格式將輸

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論