C++概述:功能函数数据类型.doc_第1页
C++概述:功能函数数据类型.doc_第2页
C++概述:功能函数数据类型.doc_第3页
C++概述:功能函数数据类型.doc_第4页
C++概述:功能函数数据类型.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+简明提要C+数据类型C+运算符C+类C+语句C+库函数C+常用的其它函数 罗伟 2001年月1日 C+数据类型数据类型 说 明数值范围 示 例bool布尔类型值true或falsebool Myb1,Myb2; Myb1=true; Myb2=iText=fun1(25.8);数组初始化使用局部静态变量定义只有在定义全局变量或局部静态变量时才能对数组初始化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;类型强制转换传统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无名联合中定义的变量共享一内存unionint I; float f1;char str18;/则各种类型变量共享一内存;可直接存取I=20; f1=3.14;类型名 &定义引用(引用变量是被引用变量的别名,它们共占一个内存)(引用实际是一和隐式指针,引用变量时.可以不写指针运算符*)改动其中一个变量值将影响另一个值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(系统类)定义字符串变量可直接加String str110,str210,str330;*str1=abc; *str2=def; *str3=*str1+*str2;Edit1-Text=*str3;数据类型 说 明数值范围 示 例C+运算符表示符号说 明 示 例+ - * /加减乘除int Sum; int x=2; int y=3; Sum=x*(x+y);%求两整数的模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; /加了:为改变全局变 量pk值,函数sub1()中的同名局部变量值保持原值2*指针变量运算符详指针页&取地址运算符详指针页.*-*类析构函数前缀class a; a:a().operation+()运算符重载(加法)运算符重载可用于实现类的对象直接相加减等;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); /对象不能引用类中的私有成员,只有类定义中的公有成员才能引用. 构造函数类名(参数表) 函数体.(主要是初始化类中的原始数据)/在类中构造函数可以系统自行生成(为空),构造函数必需同类名一样.构造函数可以不带参数.若类cir 的构造函数定义为: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析构函数类名(参数表) 函数体.(主要是当对象撤消时作一些处理工作,如变量所占内存等);cir:cir()delete str; /当对象撤消时,清除对象中的变量*str所占内存重载构造函数一个类中可以定义几个所带参数不同的构造函数,以便适应不同情况;class Aprivate:.public:A(); /不带参数的类A(int); /带一个整形参数的类A(float); /带一个浮点参数的类A(int,double,char); /带三个参数的类若定义对象: obj6(3.14); 则系统自动调用带一个浮点参数的构造函数进行初始化,其它不起作用.拷贝构造函数类名(const 类名 &对象引用名)依据已存在的对象建立一个新对象,(将原对象各成员逐域拷贝到新对象中)系统自动有缺省的函数(对象拷贝 后成员完全相同)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对象成员完全一样.对象数组类名 对象名数量cir obj93;float f3;for (I=0;Ipusub1(80,b);友元函数(一般函数作友元)友元函数可以访问类中的私有成员在类外定义,不能加:符号class Aprivate: int x; float y;public:friend void fr1(A &); /声名友元函 .; 数void fr1(A &P)x=2*x;友元成员(一个类的成员函数作为另一个类的友元)class Avoid fr1(B &);class B.friend void A:fri(B &); ;void A:fr1(B &P)countP.(类中的成员);派生类(可访问基类中的保护成员)class 派生类名:派生方式 基类名派生类新增的数据成员及成员函数;/派生类具有基类的所有成员并新增了自定义新的成员派生方式:private 或publicpublic(公有派生)时,基类中的所有公有成员在派生类中也是公有的private(私有派生)时,基类中的所有公有成员只能成为派生类中的私有成员.无论何种派生,基类中的私有成员既不允许外部函数访问,也不允许派生类中的成员函数访问.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; /表达式可以是数字,字符等类型;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循环语句while (表达式)语句; continue; /结束本次循环 break; /退出本层循环 int I,Sum=0; I=1;while (I=100) Sum=Sum+I; I+;do while语句do 语句; continue; /结束本次循环 break; /退出本层循环 while (表达式);int I,Sum=0; I=1;do Sum=Sum+I; I+; while (I=100);for语句continuebreak语句for(表达式;表达式;表达式) 语句1; ; continue; /结束本次循环 break; /退出本层循环 for (k=1;k=100;k+) Sum=Sum+k;for (k=1,n=1,k+nText=x;#endif/若变量DEBUG1被定义了在文本框中显示内存变量x的值,用于调试程序,不用时,只需删除#define DEBUG1 1 语句C+库函数(数学函数): #include 或#include 名 称 说 明 示 例(返回值) 示 例 值acos(弧度数)求反余弦函数值1.0471975asin(弧度数)求反正弦函数值cont”asin(0.5)=”asin(0.5)edl;0.5235687atan(弧度数)求反余切函数值cont”atan(1)=”atan(1)n;0.7853981atan2(Y,X)同atan()contatan2(3.4,34)endl;0.7853981cos(弧度数)求余弦函数值contacos(1.0471975);0.5cosh(弧度数)求双曲余弦函数值contcosh()ceil(浮点数)上舍入返回最小整数.double dou1=3.14; int k;k=ceil(dou1); contk;4exp(浮点数d)计算e的d次方幂contexp(1);2.71828abs(整数值)labs(整数值)fabs(整数值)求整型数的绝对值求长整型数的绝对值求浮点数的绝对值int k=-2; contabs(k);long l=-3663763; contlabs(l);double f=-3.7367836 ; contfabs(f);236637633.736836floor(浮点数)下舍入返回最小整数.double dou1=3.94; int k;k=floor(dou1); contk;3fmod(x,y)返回x/y的余数contfmod(7.6,2.5)endl;0.1frexp(val,eptr)double valint *eptr/该函数返回尾数x, 0.5x1把双精度数val分解为尾数x和以2为底的指数,即val=x*2的n次幂,并把n存放在eptr指向的变量中。/返回数字部份xint exp; double x;double x=frexp(48,&exp);cont”尾数为”xendl;cont”指数为”expendl;尾数为:0.75指数为:6/即48=0.75* 26log(浮点数x)求ln(x)的值contlog(2.71828);1log10(浮点数x)求log10(x)的值contlog10(100);2modf(val,iptr)double valdouble *iptr/该函数返回val的小数部份。把双精度数val分解为整数部份和小数部份,把整数部份存到iptr指向的单元。/返回val的小数部份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); /相当于tan(PI/4)1tanh(X)计算x的双曲正切值.conttanh(0.785398);C+库函数(字符函数): #include 名 称 说 明 示 例(返回值) 示 例 值isalnum(ch)int ch;检查ch是否是字母或数字./是字母或数字返回1,否则返回0;contisalnum(+);0isalpha(ch)int ch;检查ch是否是字母/是字母返回1,否则返回0contisalpha(6);相当于contisalpha(54);0iscntrl(ch)int ch;检查ch是否是控制字符(ASCII码在0至0x1F之间)/是返回1,否则返回0contiscntrl(46);1isdigit(ch)int ch;检查ch 是否是数字(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是否是字标点字符。(不含空格)/是返回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进制数学字符(0至9,或A至F,或a至f )/是返回1,否则返回0contisdigit(A);0C+库函数(字符串函数): #include 名 称 说 明 示 例(返回值) 示 例 值strcat()/函数原型说明char*strcat(char *str1,char *str2)把str2字符串接到str1字符串后面。str1字符串最后面的0取消。 char *str3;static char str1=“STR1的字符内容_”;static char str1=“STR2的字符内容*”;str3=strcat(str1,str2);contstr3;STR1的字符内容_ STR2的字符内容*strchr()/函数原型说明char*strchr(char *str1,int ch)找出str指向的字符串中第一次出现字符ch的位置/返回指向该位置的指针,如找不到,返回空指针。static char str1=“ABCD1234”;int *p;p=strchr(str1,D);contp;D1234strcmp()/函数原型说明int strcmp(char *str1,char *str2)比较两个字符串str1,str2/若str1str2返回正数static char str1=“密码1234”;static char str2=“密码1234”;if (strcmp(str1,str2)=0 cont”密码正确”; /注意比较两个字符串是否相等时不能用if (str1=str2)之类,但可以比较单字符.密码正确strcpy()/函数原型说明int *strcpy(char *str1,char *str2)把str2指向的字符串拷贝到字符串str1中去.(连同str2后面的0一同拷贝过去)/返回str1; str1的长度应大于str2的长度。static char str110,str35;static char str2=“要拷贝的字符串.”;contstrcpy(str1,str2);contstrcpy(str1,”China”);contstrcpy(str3,str2,3); /或用strncpy(,)/注意不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。如:str1=str2; /是错误的。但可以用String 来定义字符串类型数据完成+操作;如String str1,str2; str1=str1+str2;要拷贝的字符串.China要拷贝strlen()/函数原型说明unsign int strlen(char *str1)统计字符串str1中字符的个数(不包括终止符0)int N;static char str1=“AB12罗伟”;contstrlen(str1);/中文字符占2个字节8strstr()/函数原型说明char *strstr(char *str1,char *str2)找出str2字符串在str1字符串中第一次出现的位置(不包括str2字符串终止符0)/返回该位置的指针,如找不到,返回空指针。static char str1=“ABCD1234:”;static char str2=“CD”;char *str3;str3=strstr(str1,str2);contstr3endl;/本函数对中文无效返回空指针。CD1234tolower(ch)int ch;将ch单字符转换为小写字符char ch=B;conttolower(ch);btoupper(ch)int ch;将ch单字符转换为大写字符.char ch=98;conttoupper(ch);Bstrlwr(*str1)将字符串str1中的大写字符转为小写字符static char str1=AbCDef123contstrlwr(str1)abcdef123strupr(*str1)将字符串str1中的小写字符转为大写字符static char str1=AbCDef123contstrlwr(str1)ABCDEF123C库函数(输入输出函数)(C+也可用): #include 名 称 说 明 示 例(返回值) 示 例 值 String 字符串 变量名定义字任串变量名,以便完成诸如字符串的直接相加运算,而不必用strcpy()函数。 C库函数(输入输出函数)(C+也可用): #include 名 称 说 明 示 例(返回值) 示 例 值abort()异常终止一个程序if (error) abort(); /比exit(0);更彻底clearerr(fp)fclose(fp)关闭文件流fpFILE *fp;fp=fopen(“c:readme.txt”,”rw+”); fclose(fp);feof(FILE *fp )检查文件是否结束FILE *stream;stream = fopen(DUMMY.FIL, r);fgetc(stream); if (feof(stream) printf(文件指针在尾部n); fclose(stream);fopen(fname,mode)/函数原型FILE *fopen(const char *fname,const char *mode)fname:文件名n:打开方式/FILE *fp;/fp=fopen(“c:win98 win.ini”,”rb”;/打开一个文件,并返回一个与文件流相关联的指针.参数mode用以下值:“r” 打开文本文件 用于只读“w” 创建新的文件用于只写(或文件已存在则覆盖)“a” 打开文本文件用于添加内容到文件尾部“rb” 打开二进制文件用于只读FILE *fp; char fspec81;printf (“请输入一个文件名:n”);gets(fspec); fp=fopen(fspec,”r”);if (fp=NULL) printr(“不能打开文件 %Sn”,fspec);exit(1); /以fp来进行文件操作。“wb” 创建新的二进制文件用于只写“ab” 找开二进制文件用于添加“r+” 打开已存在的文本文件用于更新 (读或写)“w+” 创建新的文本文件用于更新“a+” 打开文本文件用于更新“rb+” 打开二进制文件用于更新“wb+” 创建新的二进制文件用于更新“ab+” 打开二进制文件用于更新当文件用于更新(读或写)时,若文件已存在,则文件被打开,若文件不存在,则创建该新文件.freopet(fname,mode,fp)同fopen()函数,但它首先关闭文件流fptmpfile()以二进制读写方式打开一个临时文件,当文件被关闭或程序终止时,文件被自动删除。#include #include int main(void) FILE *tempfp; tempfp = tmpfile(); if (tempfp) printf(临时文件被创建n); else printf(不能创建临时文件n); exit(1); return 0;fflush(fp)刷新输出流fp并立即将输出发送到物理设备。调用成功返回0;发生错误时返回EOFfwrite(msg, strlen(msg), 1, stream);clrscr();printf(按任一键立即显示ABC.TXT文件:); getch(); flush(stream);fprintf(fp,fmt,)将格式串输出到流fp返回所输出的字节数.#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内容100 C 1.234fputc()/函数原型int fputc(char ch,FILE *fp)将字符ch输出fp指向的文件中.返回所输出的字节数,发生错误返回EOFint main(void) char msg = Hello world; int i = 0; while (msgi) fputc(msgi, stdout); i+; /stdout为标准输出设备 return 0; /或文件名fwrite(p,size,n,fp)/函数原型fwrite(char *p,unsigned size,unsigned n,FILE *fp)把p所指向的n*size个字节输出到fp所指向的文件中struct mystruct /定义结构mystruct int i; char ch;int main(void) FILE *stream; struct mystruct s; /定义结构变量s if (stream = fopen(TEST.$, wb) = NULL) fprintf(stderr, 不能打开文件.n); return 1; s.i = 0; s.ch = A; /写结构到文件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()/函数原型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()/函数原型int fread(char *p,unsigned size,unsigned n,FILE *fp)将fp所指定的文件中读取长度为size的n个数据项,存到p所指向的内存区.int main(void) FILE *stream; char msg = 这是一个测试; char p20; if (stream = fopen(DUMMY.FIL, w+) = NULL) fprintf(stderr, 不能打开文件 .n); return 1; /* 写一些数据到文件 */ 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()/函数原型int fscanf(FILE *fp,char fmt,args )向fp指定的文件中按fmt格式将输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论