您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > c++语言基础知识汇总
1第二章C++语言初步本章主要内容1.C++语言的字符集、词汇2.基本数据类型、运算符与表达式3.C++中的常量与变量4.C++中的I/O5.基本控制结构6.数组、结构体、共用体与枚举类型7.指针、引用与动态内存分配8.函数与函数重载21:20:312§1C++语言的字符集与词汇1.字符集(1)字母ABCD…Zabcd…z(2)数字0123456789(3)特殊符号空格!#$%&.'()*+,-?/:;=@[\]^_{|}~21:20:3132.词汇:五类(1)关键字(保留字):系统预定义且有专门含义的单词,不允许另作它用.C++的关键字包含了C语言的几乎所有关键字.C++的关键字随C++的发展而不断增加(2)标识符:由程序员为程序中的各种成份定义的名字.以字母或_开头,由字母、_、数字组成.不能是关键字.C++中的标识符区分大小写.见名知义的原则.C++系统对标识符的长度有一定限制(3)直接常量(4)运算符(5)分隔符:用来分隔不同的语法成份的单词空格';{}#()/**///**C++的两种注释:./*…*/.//注释到行尾21:20:314§2基本数据类型、运算符与表达式一.数据类型–每一项数据都唯一的属于某种类型–每一数据类型都有一个明确定义的值的集合–每一类型的数据占用相同大小的存储空间–同一类型的数据可以进行相同类型的运算数据类型简单类型复合类型指针类型*用户定义类型enum基本类型整型int浮点型float字符型char空类型void布尔型bool数组[]结构体struct共用体union类class1.C++的数据类型基本类型是由系统定义,各种语言都具备的类型复合类型与指针类型都属于用户定义类型21:20:3152.基本类型–int型:整型VC中占4字节–float型:浮点型4字节–char型:字符型1字节–void型:空类型–bool型:布尔型1字节值为true或false**修饰说明符long与short、signed与unsigned–long和short修改整型具有的最大值和最小值–signed和unsigned告诉编译器如何处理整型和字符型数据的最高位–float型可用double和longdouble修饰,修改实型数据的表数范围和精度21:20:316类型名字节数取值范围bool1true、falsechar1-128--127[signed]char1-128--127unsignedchar10--255int4-231--231-1[signed]int4-231--231-1unsigned[int]40--232-1[signed]short[int]2-32768--32767unsignedshort[int]20--216-1[signed]long[int]4-231--231-1unsignedlong[int]40--232-1float4-3.4E(+/-)38--3.4E(+/-)38double[float]8-1.7E(+/-)308--1.7E(+/-)308longdouble[float]10-3.4E(+/-)4932--3.4E(+/-)4932C++中的全部基本类型21:20:317二.运算符与表达式1.运算符–算术运算符:+-*/%++--–关系运算符:====!=–逻辑运算符:&&||!–位运算符:&|^~–赋值运算符:=+=-=*=/=%===&=|=^=–条件运算符:?:–逗号运算符:,–指针运算符:&*–求字节运算符:sizeof–函数调用运算符、强制类型转换运算符:()–分量运算符:.-–数组下标运算符:[]–作用范围分解运算符:::–动态内存分配符:new、delete–插入提取运算符:21:20:318–运算符的优先级与结合性运算符含义要求操作对象数目结合性()::[].-括号作用范围分解(限定)运算符数组下标运算符成员运算符左-右++--&*!~+-()sizeofnewdelete自增自减取地址指针引用逻辑非按位取反正负号强制类型转换求字节动态分配释放内存1右-左*/%乘法除法求余2左-右+-加法减法221:20:319–运算符的优先级与结合性(续表)运算符含义要求操作对象数目结合性左移右移运算符2左-右==小于小于等于大于大于等于==!=等于不等于&^|按位与按位异或按位或&&逻辑与||逻辑或?:条件运算符3右-左=+=-=*=/=%===&=^=|=赋值运算符扩展的赋值运算符2右-左,逗号运算符2左-右21:20:3110–C++中的类型转换–转换运算符:()两种强制类型转换的方法:•(目标类型名)表达式:floatx=2.5;inty;y=(int)x;•目标类型名(表达式):floatx=2.5;inty;y=int(x);–C++中的显式转换static_cast可以不用强制类型转换但一定会发生转换的地方(为了更清楚、更醒目而使用)const_cast对const和volatile进行转换reinterpret_cast转换为完全不同的意思,必须转换回原来的类型才能安全的使用,最为危险dynamic_cast把基类对象(指针)转换为派生类对象(指针)时使用–使用方式转换用关键字目标类型名(待转换的表达式)21:20:3111例:static_castvoidfunc(int){}voidmain(){inti=0x7fff;longl;floatf;l=i;f=i;//更好的方法是使用static_castl=static_castlong(i);f=static_castfloat(i);i=l;i=f;//以上两条语句会出Warning,可使用如下方式消除i=static_castint(l);i=static_castint(f);charc=static_castchar(i);void*vp=&f;float*fp=(float*)vp;//C的方法,不好fp=static_castfloat*(vp);//更好的方法doubled=0.0;intx=d;//自动发生隐式类型转换x=(int)d;//C的方法,不好x=static_castint(d);//更好的方法func(d);//自动发生隐式类型转换func(static_castint(d));//更好的方法}21:20:3112例:const_castvoidmain(){constinti=0;//int*j=&i;//错误,不允许这样赋值int*k=(int*)&i;//被摒弃的方法k=const_castint*(&i);//long*l=const_castlong*(&i);//错误,不允许同时进行const*-nonConst*//和nonConst*-long*两项转换}21:20:3113例:reinterpret_cast#includeiostreamusingnamespacestd;constintsz=100;structX{inta[sz];};voidprint(X*x){for(inti=0;isz;i++)coutx-a[i];coutendl-----------------endl;}voidmain(){Xx;print(&x);int*xp=reinterpret_castint*(&x);for(int*i=xp;ixp+sz;i++)*i=10;print(reinterpret_castX*(xp));print(&x);}21:20:31142.表达式由运算符连接操作数构成的式子–算术表达式–关系表达式–逻辑表达式–赋值表达式–条件表达式–逗号表达式21:20:3115§3常量与变量一.C++中的常量1.直接常量(字面常量):10,10.5,'A',string.int型.float型.char型.字符串常量.bool型:true、false2.符号常量:C++中有两种符号常量–#define定义的常量例:#definepi3.1415926–关键字const定义的常量例:constintsz=100;–#define定义的常量,在预处理时只是字符串的替换,对编译器而言,不带有任何类型信息,不便于查错;而const定义的常量带有类型信息,故优于#define定义的常量–C++推荐使用const定义的常量21:20:3116–const常量定义语法:const类型名常量名=常量值;或类型名const常量名=常量值;例:constfloatpi=3.14;floatconstpi=3.14;constintmin=50;intconstmin=50;constintmax=2*min;intconstmax=2*min;•const定义的常量,相当于定义了一个相应类型的变量,但其值不能发生改变例:constintmin=50;min=40;//错误,不能改变min的值所以,定义const常量的同时必须初始化,且一旦初始化后,就不会(因不能故不会)再发生变化。因此在作用范围内若某变量的值不会发生改变,则定义该变量时应用const进行限定,以免无意中改变该变量的值•const常量是编译时的常量例:constintsz=100;intarr[sz];21:20:3117–const与指针1.指向常量的指针:限定指针所指的对象、变量定义形式:const类型*指针变量[=地址表达式];或类型const*指针变量[=地址表达式];例:intvar=35;constintmax=100;int*p;constint*p1_const;constint*p2_const;p1_const=&var;p2_const=&max;var=40;*p1_const=100;*p2_const=200;max=200;p=&max;p1_const和p2_const,var不是常量*p1_const和*p2_const、max是常量21:20:3118–指向常量的指针constint*p1_constconstint*p2_constconstintmaxintvarp1_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;21:20:31192.指针常量:指针变量本身的值初始化后不能再改变定义方式:类型*const指针变量=地址表达式;例:intvar1=100,var2=200;constintmax=1000;int*constcst_p1=&var1;int*constcst_p2=&max;*cst_p1=var2;cst_p1=&var2;只说明了指针变量如cst_p1本身是常量,但并没有说不能改变*cst_p1的值必须要赋初值21:20:31203.指向常量的指针常量指针变量本身和所指对象的值都为常量,不能改变定义方式:const类型*const指针变量=地址表达式;或类型const*const指针变量=地址表达式;例:intvar1=128,var2=256;constintmax=1000;constint*constdoubleCst_p1=&var1;constint*constdoubleCst_p2=&max;doubleCst_p1=&var2;*doubleCst_p1=500;var1=max-var2;21:20:3121二.C++中的变量–变量必须先定义(声明)再使用–变量的定义存储类型数
本文标题:c++语言基础知识汇总
链接地址:https://www.777doc.com/doc-3376755 .html