分享
分销 收藏 举报 申诉 / 68
播放页_导航下方通栏广告

类型c++语言基础知识汇总PPT课件.ppt

  • 上传人:精****
  • 文档编号:10040615
  • 上传时间:2025-04-19
  • 格式:PPT
  • 页数:68
  • 大小:1.56MB
  • 下载积分:14 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    c++ 语言 基础知识 汇总 PPT 课件
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,第二章,C+,语言初步,本章主要内容,1.C+,语言的字符集、词汇,2.,基本数据类型、运算符,与表达式,3.C+,中的,常量,与变量,4.,C+,中的,I/O,5.,基本控制结构,6.,数组、结构体、共用体与枚举类型,7.,指针、,引用,与,动态内存分配,8.,函数与,函数重载,2,1 C+,语言的字符集与词汇,1.,字符集,(1),字母,A B C D,Z a b c d,z,(2),数字,0 1 2 3 4 5 6 7 8 9,(3),特殊符号,空格,!#$%&.,()*,+,,,-,?,/:;,_|,3,2.,词汇:五类,(1),关键字,(,保留字,):,系统预定义且有专门含义的单词,不允许另作它用,.C+,的关键字包含了,C,语言的几乎所有关键字,.C+,的关键字随,C+,的发展而不断增加,(2),标识符:由程序员为程序中的各种成份定义的名字,.,以字母或,_,开头,由字母、,_,、数字组成,.,不能是关键字,.C+,中的标识符区分大小写,.,见名知义的原则,.C+,系统对标识符的长度有一定限制,(3),直接常量,(4),运算符,(5),分隔符:用来分隔不同的语法成份的单词,空格,;#,(),/*/,*C+,的两种注释,:,./*,*/./,注释到行尾,4,2,基本数据类型、运算符与表达式,一,.,数据类型,每一项数据都唯一的属于某种类型,每一数据类型都有一个明确定义的值的集合,每一类型的数据占用相同大小的存储空间,同一类型的数据可以进行相同类型的运算,数据类型,简单类型,复合类型,指针类型 *,用户定义类型,enum,基本类型,整型,int,浮点型,float,字符型,char,空类型,void,布尔型,bool,数组,结构体,struct,共用体,union,类,class,1.C+,的数据类型,基本类型是由系统定义,各种语言都具备的类型,复合类型与指针类型都属于用户定义类型,5,2.,基本类型,int,型:整型,VC,中占,4,字节,float,型,:,浮点型,4,字节,char,型,:,字符型,1,字节,void,型,:,空类型,bool,型,:,布尔型,1,字节 值为,true,或,false,*,修饰说明符,long与short、signed与unsigned,long和short修改整型具有的最大值和最小值,signed和unsigned告诉编译器如何处理整型和字符型数据的最高位,float型可用double和long,double修饰,修改实型数据的表数范围和精度,6,类型名,字节数,取值范围,bool,1,true,、,false,char,1,-128-127,signed char,1,-128-127,unsigned char,1,0-255,int,4,-2,31,-2,31,-1,signed int,4,-2,31,-2,31,-1,unsigned int,4,0-2,32,-1,signed short int,2,-32768-32767,unsigned short int,2,0-2,16,-1,signed long int,4,-2,31,-2,31,-1,unsigned long int,4,0,-2,32,-1,float,4,-3.4E(+/-)38-3.4E(+/-)38,double float,8,-1.7E(+/-)308-1.7E(+/-)308,long double float,10,-3.4E(+/-)4932-3.4E(+/-)4932,C+,中的全部基本类型,7,二,.,运算符与表达式,1.,运算符,算术运算符:,+-,*/%+-,关系运算符:,=,赋值运算符:,=+=-=*=/=%=&=|=,条件运算符:?:,逗号运算符:,指针运算符:,&,*,求字节运算符:,sizeof,函数调用运算符、,强制类型转换,运算符:(),分量运算符:,.-,数组下标运算符:,作用范围分解运算符:,:,动态内存分配符:,new,、,delete,插入提取运算符:,8,运算符的优先级与结合性,运算符,含义,要求操作对象数目,结合性,(),:,.-,括号,作用范围分解,(,限定,),运算符数组下标运算符,成员运算符,左,-,右,+-,&,*,!,+-,(),sizeof,new delete,自增 自减,取地址,指针引用,逻辑非,按位取反,正 负号,强制类型转换,求字节,动态分配 释放内存,1,右,-,左,*/%,乘法 除法 求余,2,左,-,右,+-,加法 减法,2,9,运算符的优先级与结合性(续表),运算符,含义,要求操作对象数目,结合性,左移 右移运算符,2,左,-,右,=,小于 小于等于,大于 大于等于,=!=,等于 不等于,&,|,按位与,按位异或,按位或,&,逻辑与,|,逻辑或,?:,条件运算符,3,右,-,左,=,+=-=*=/=%=,=&=|=,赋值运算符,扩展的赋值运算符,2,右,-,左,,,逗号运算符,2,左,-,右,10,C+,中的类型转换,转换运算符:(),两种强制类型转换的方法,:,(,目标类型名,),表达式:,float x=2.5;int y;,y=(int)x;,目标类型名(表达式):,float x=2.5;int y;,y=int(x);,C+,中的显式转换,static_cast,可以不用强制类型转换但一定会发生转换的地方,(,为了更清楚、更醒目而使用),const_cast,对,const,和,volatile,进行转换,reinterpret_cast,转换为完全不同的意思,必须转换回原来的类型才能安全的使用,最为危险,dynamic_cast,把基类对象,(,指针,),转换为派生类对象,(,指针,),时使用,使用方式,转换用关键字,(,待转换的表达式,),11,例:,static_cast,void,func(int),void,main,(),int,i=0 x7fff;long l;float f;,l=i;f=i;,/,更好的方法是使用,static_cast,l=,static_cast,(i);f=,static_cast,(i);,i=l;i=f;,/,以上两条语句会出,Warning,,可使用如下方式消除,i=,static_cast,(l);i=,static_cast,(f);,char,c=,static_cast,(i);,void,*vp=,float,*fp=(,float,*)vp;/C,的方法,不好,fp=,static_cast,(vp);/,更好的方法,double,d=0.0;,int,x=d;/,自动发生隐式类型转换,x=(,int,)d;/C,的方法,不好,x=,static_cast,(d);/,更好的方法,func(d);/,自动发生隐式类型转换,func(static_cast(d);/,更好的方法,12,例:,const_cast,void,main,(),const int,i=0;,/int*j=,/,错误,不允许这样赋值,int,*k=(int*),/,被摒弃的方法,k=,const_cast,(,/long*l=const_cast(,/,错误,不允许同时进行,const*-nonConst*,/,和,nonConst*-long*,两项转换,13,例:,reinterpret_cast,#include,using namespace,std,;,const int,sz=100;,struct,X,int,asz;,void,print(,X,*x),for,(,int,i=0;isz;i+),cout ai ;,cout endl -endl;,void,main,(),X,x;,print,(,int*xp=,reinterpret_cast,(,for,(,int,*i=xp;ixp+sz;i+),*i=10;,print,(,reinterpret_cast,(xp);,print,(,14,2.,表达式,由运算符连接操作数构成的式子,算术表达式,关系表达式,逻辑表达式,赋值表达式,条件表达式,逗号表达式,15,3,常量与变量,一,.C+,中的常量,1.,直接常量,(,字面常量,):10,,,10.5,,,A,,,string,.,int型 .float型 .char型 .字符串常量 .,bool型:true、false,2.,符号常量:,C+,中有两种符号常量,#define,定义的常量,例:,#define pi 3.1415926,关键字,const,定义的常量,例:,const int sz=100;,#define,定义的常量,在预处理时只是字符串的替换,对编译器而言,不带有任何类型信息,不便于查错;而,const,定义的常量带有类型信息,故优于,#define,定义的常量,C+,推荐使用,const,定义的常量,16,const,常量,定义语法,:,const,类型名 常量名,=,常量值;,或,类型名,const,常量名,=,常量值;,例:,const float pi=3.14;,float const pi=3.14;,const int min=50;,int const min=50;,const int max=2*min;,int const max=2*min;,const,定义的常量,相当于定义了一个相应类型的变量,但其值不能发生改变,例:,const int min=50;,min=40;,/,错误,不能改变,min,的值,所以,,定义,const,常量的同时必须初始化,,且一旦初始化后,就不会,(,因不能故不会,),再发生变化。因此在作用范围内若某变量的值不会发生改变,则定义该变量时应用,const,进行限定,以免无意中改变该变量的值,const,常量是编译时的常量,例:,const int sz=100;,int arrsz;,17,const,与指针,1.,指向常量的指针:,限定指针所指的对象、变量,定义形式:,const,类型*指针变量,=,地址表达式,;,或,类型,const*,指针变量,=,地址表达式,;,例:,int var=35;,const int max=100;,int*p;,const int*p1_const;,const int*p2_const;,p1_const=,p2_const=,var=40;,*p1_const=100;,*p2_const=200;,max=200;,p=,p1_const,和,p2_const,,,var,不是常量,*p1_const和*p2_const、max是常量,18,指向常量的指针,const,int*p1_const,const,int*p2_const,const,int max,int var,p1_const,不是常量,,p1_const,指向的变量的值,不能,通过*,p1_const,改变,但,p1_const,指向的变量即,var,本身不是常量,是,可以,改变的,故,*,p1_const=100;,var=40;,p2_const,不是常量,,p2_const,指向的变量的值,不能,通过*,p2_const,改变,且,p2_const,指向的变量即,max,本身是常量,其值不能改变,故,*,p2_const=200;,max=200;,19,2.,指针常量:,指针变量本身的值初始化后不能再改变,定义方式:,类型*,const,指针变量,=,地址表达式;,例,:int var1=100,var2=200;,const int max=1000;,int*const cst_p1=,int*const cst_p2=,*cst_p1=var2;,cst_p1=,只说明了指针变量如,cst_p1,本身是常量,但并没有说不能改变*,cst_p1,的值,必须要赋初值,20,3.,指向常量的指针常量,指针变量本身和所指对象的值都为常量,不能改变,定义方式:,const,类型*,const,指针变量,=,地址表达式;,或,类型,const*const,指针变量,=,地址表达式;,例:,int var1=128,var2=256;,const int max=1000;,const int*const doubleCst_p1=,const int*const doubleCst_p2=,doubleCst_p1=,*doubleCst_p1=500;,var1=max-var2;,21,二,.C+,中的变量,变量必须先定义,(,声明,),再使用,变量的定义,存储类型 数据类型名 变量名列表;,C+,中,几乎,随处可以定义变量,例:,for(,int i,=0;i100;i+),if(i 100),int x,=0;,x+=100;,int y,=10;,变量的分类:根据定义变量的位置,分为两类:,全局变量,(外部变量),局部变量,(内部变量),22,变量的存储类型,存储方式:动态存储方式和静态存储方式,静态存储方式:程序运行过程中给此类变量分配固定的存储空间,动态存储方式:程序运行过程中根据需要,给此类变量动态分配存储空间,程序代码区,静态存储区,动态存储区,程序的存储组织,23,变量的存储类型,auto,、,register,、,static,、,extern,和默认五种,auto,:自动类型,普通的局部变量都属于此类,分配在动态存储区中,register,:寄存器类型,static,:静态变量,静态局部变量:在静态区中,只初始化一次,多次调用函数时能保留前一次函数调用结束时的值,延长了该变量的,生存期,静态全局变量:在静态区中,限制了该变量的,作用域,extern,:外部变量,定义全局变量,声明外部变量:扩展了全局变量的作用域,24,例:,static,#include,using namespace,std;,int,factor(int n),static int,result=1;,result*=n;,return result;,void,main(),for(,int,i=1;i=8;i+),cout factor(i);,cout endl;,25,例:,extern,/main.cpp,#include,using namespace std;,extern int nTestVar;,void main(),nTestVar=100;,cout nTestVar,变量,向流中添加数据的操作称为插入操作,:,流对象,数据,:,提取运算符,cin,和,cout,是,C+,预定义的流对象,cout:,用于进行输出操作,与显示器相关联,cin:,用于进行输入操作,与键盘相关联,29,用法,:,cout,表达式,1,表达式,2,变量,1,变量,2,变量,n;,可以串联多个,同样也可以串联多个,给多个变量输入数据,输入时多个数据项之间用空格、,Tab,或回车分隔,具有智能,能够自动判断其后的数据项的类型,并采用相应的类型进行输出或输入,使用流对象时,必须,#include,相应的头文件,(,如,iostream),并使用语句,“,using namespace,std;,”,打开名称空间,std,cin,与,cout,在,iostream,中的,std,名称空间中定义,30,二,.,简单的输入,/,输出格式控制:使用操纵符,(manipulator),I/O,流类库中提供了若干个操纵符,可以直接嵌入到输入,/,输出语句中实现,I/O,格式控制,操纵符,功能,endl,输出一个换行符,并刷新流,dec,用十进制输入或输出数值,oct,用八进制输入或输出数值,hex,用十六进制输入或输出数值,ends,输出一个空格符,并刷新流,setw(int n),设置其后一个数据项占据的宽度,setfill(char c),设置数据项宽度不足时的填充字符,setprecision(int n),设置浮点数输出小数位数,常用的,I/O,操纵符,31,说明:,不带参数的,I/O,操纵符定义在,iostream,中,使用带参数的,I/O,操纵符,需包含,iomanip,setw(),只对其后紧跟着的一个真正的数据项起作用,例:,coutAendsBendl;,couthex255ends32endl;,coutdecsetw(5)setfill(0)32endl;,coutsetw(5)setprecision(4)7.5612endl;,屏幕输出,32,5,基本控制结构,顺序、选择,(,分支,),和循环结构,对应的控制语句,控制语句,无条件控制语句,条件控制语句,分支语句,循环语句,if,语句,switch,语句,switch,语句,for,语句,while,语句,do-while,语句,break,语句,continue,语句,return,语句,goto,语句,33,6,数组、结构体、共用体和枚举类型,一,.,数组:需要处理相同类型的一批相关数据时使用,数组分为一维数组与多维数组,定义:,一维数组:类型 数组变量名,数组长度,;,二维数组:类型 数组变量名,第一维长度,第二维长度,;,例:,int nArr10;,int nArr2d105;,说明:,数组长度必须是常量表达式:编译时求值,C,意义上的字符串,采用字符数组作为其存储形式,在最后添加一个,ASCII,码为,0,的字符作为,字符串,的结束标志,34,string,类:字符串类,string,类封装了字符串的基本特性和对字符串的典型操作,其对象可用于保存几乎任意长的字符串,对处理输入文件中一行上字符数不定的情况特别有用,string,类是,STL,中的类,使用时需要包含头文件,string,并打开名称空间,std,string,类的操作:成员函数,求串长:,size(),、,length(),例:,#include,#include,using namespace std;,void PrintAttribute(const string&str),cout size:,str.size(),endl;,cout length:,str.length(),endl;,35,int main(),string s1,s2;,PrintAttribute(s1);,s1=My string object;PrintAttribute(s1);,s2=Another String Object;PrintAttribute(s2);,return 0;,36,赋值:,assign()=,s1.assign(s2);,s1=s2;,连接:,append +=+,s1.append(s2);,s1+=s2;s1=s1+s2;,下标:,s10,#include,#include,using namespace std;,int main(),string s1=cat,s2,s3;,s2=s1;s3.assign(jump);,cout s2 s3 endl;,s1+=s3;,cout s1 endl;,s1.append(and yell);,cout s1 endl;,s10=h;,cout s1 endl;,return 0;,37,比较,string,pare(s2);,比较字符串,s1,与,s2,,当,s1,等于,s2,时,返回,0,;当,s1,大于,s2,时返回正值,否则返回负值,字符串的部分比较,pare(beg1,len1,s2,beg2,len2);,beg1,和,len1,指示,s1,参与比较的开始字符的下标与长度,,beg2,和,len2,指示,s2,参与比较的开始字符的下标与长度,运算符:,!=,38,例:,string,的比较:字符串的排序,#include,#include,using namespace std;,int main(),string names=Li Hua,He XiaoMing,Zhang Li,Sun Fei,Chen Bao;,string s;,int i,j,k,nmb;,nmb=,sizeof(names)/sizeof(names0),;,for(i=0;inmb-1;i+),k=i;,for(j=i+1;jnamesj,)k=j;,if(k!=i),s=namesk;namesk=namesi;namesi=s;,for(i=0;inmb;i+),cout name i =namesi endl;,return 0;,39,子串:,substr(),s.substr(beg,len);,beg,指定子串的开始下标,,len,指定读取的字符数,string s=C+program design,;,cout s.substr(4,7)=0),alphabet.replace(x,1,;);,x=alphabet.find(,x+1);,cout alphabet endl;,return 0;,41,插入:,insert(),s1.insert(n,s2);,例:,string s1=cat jump;,string s2=dog;,s1.insert(4,s2);,s1.insert(4,and);,cout s1 endl;,42,转换成,C,语言式的,char*,型字符串:,data()c_str()copy(),char*ptr=,s.data();/char*ptr=s.c_str();,s.copy(buffer,n,begin);,#include,#include,using namespace std;,int main(),string s=String Object;,const char*ptr1;,ptr1=s.data();,int len=s.length();,char*ptr2=new charlen+1;,s.copy(ptr2,len,0);ptr2len=0;,cout s endl;,cout ptr1 endl;,cout ptr2 endl;,delete ptr2;,return 0;,43,从文件中输入一行字符:,getline(),getline(in,,,str,,,ch);,其中:,in,为输入流对象,str,为,string,类对象,ch,为结束输入的字符,默认为,n,例:,string s;,getline(cin,s,n);,从键盘输入一行字符,(,以回车结束,),,存入,s,中,44,例:从文件中输入一行数据,#include,#include,#include,using namespace std;,int main(),string line;,ifstream input(input.txt,ios:in);,while(1),getline(input,line);,if(input.eof()break;,/,一行数据已存入,line,中,可对其处理,此处只将其输出,cout line y?x:y;,void main(),int a,b;,cin a b;,cout max(a,b)endl;,60,例:内联函数,*,注意,.,若,inline,不在函数名第一次出现时指定,则编译器把该函数做为普通函数对待,.,内联函数的函数体应尽可能简洁,否则会增加程序的体积,.,内联函数中不能包含复杂的流程控制语句,否则,inline,关键字将不会起作用,该函数将成为普通函数,.inline,函数不能递归,也不能包含静态变量,inline int isnumber(char);,void main(),char c;,int n;,n=0;,while(c=getchar()!=n),if(isnumber(c)n+;,cout n=n=0,61,.,带缺省实参值的函数,声明或定义函数的同时,可对函数的某些参数进行初始化,该初始化的值称做缺省实参值。调用该函数时,可传递少于形参数目的参数,对缺少实参值的参数,函数使用缺省的实参值,.,声明或定义形式,:,类型名 函数名,(,参数类型,1,参数名,1=,缺省值,1,参数类型,2,参数名,n=,缺省值,n),例,:void showchar(char c,int times=20),for(int i=1;i=times;i+),cout c;,cout 0?x:-x;,long abs(long x),return x0?x:-x;,float abs(float x),return x0?x:-x;,例,:int max(int x,int y),return xy?x:y;,long max(long x,long y),return xy?x:y;,float max(float x,float y),return xy?x:y;,65,.,函数重载的必要性,.,C+,实现函数重载的机制,:,可能的方案:对函数名进行修饰,例,:,三个,abs(),函数,C+,处理时,在内部给函数名加上了前缀或后缀,以区分重载的一组函数,进行修饰后三个函数的名字可能是:,abs_int()abs_long()abs_float(),.,多个函数共用同一个名字,而这些函数进行的操作与完成的功能大体上相同,只是所操作的数据的类型不同,对这些函数以一个统一的名字调用,符合人的思维习惯,便于阅读理解程序,66,.,函数修饰指示符,.,extern C,:函数按,C,中方式处理,不允许重载,.,extern C+,:,缺省方式 允许函数重载,例:,extern C,void f(),void f(int),extern C,void f(),void g(),extern C+,void f(),void f(int),67,*,注意,:,.,重载的多个函数应在参数数目或参数的类型上有所区别,.,函数的返回值不能用来区别重载的函数,.,引用参数不能用来区别重载的函数,.,函数带有缺省实参时可能造成二义性,例:,int sum(int a,int b,int c=0);,int sum(int a,int b);,应避免这种问题,.,重载的函数应该是功能相同或相似的一组函数,不要把完全没有关系的函数进行重载,68,作业,swap,函数的各种情况,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:c++语言基础知识汇总PPT课件.ppt
    链接地址:https://www.zixin.com.cn/doc/10040615.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork