C++精华笔记1/125“C++程序设计”笔记(课程名:计算引论)(教材:钱能清华大学出版社)(本笔记中的例题均在VC++6.0环境下通过)1C++入门1.1从C到C++1980年:贝尔实验室开始对C进行改进和扩充―――带类的C1983年:取名C++1994年:制定ANSI(美国国家标准协会:AmericanNationalStandardsInstitute)C++标准草案1994~:不断发展―――目前的C++C++:包括了整个C:C的全部特征、属性、优点支持面向对象编程(OOP)包括过程性语言部分和类部分过程性语言部分:与C无本质上的区别类部分:面向对象程序设计的主体先是函数语言,面向对象语言1.2程序与语言程序=算法+数据结构+程序设计方法+语言工具+环境C++语言的数据结构:以数据类型的形式体现。程序:是软件对机器而言:按硬件设计规范编制的动作序列(即:机器指令序列)对人而言:用语言(高、低级语言)编写的语句序列程序语言的发展:低级语言→高级语言程序设计首要目标:可读性、易维护性、可移植性1.3结构化程序设计是面向过程的程序设计主要思想:功能分解、逐步求精缺点:可重用性极差1.4面向对象程序设计基本思想:把信息和对这些信息的处理作为一个整体C++:是支持面向对象程序设计的语言C++精华笔记2/125C++的三大特性:封装性(数据隐藏)继承性(软件重用)多态性(函数重载)1.5程序开发过程1.6最简单的程序程序体:程序体由声明语句和函数组成例://文件名:abc.cpp/*该程序的功能是:输出:Iamastudent.*/#includeiostream.hvoidmain(){coutIamastudent.\n;}说明:1.大小写区分(即:abc与Abc不同)2.C++系统是函数驱动的,一个可执行程序必须有、且只能有一个主函数:main(),作为程序的入口3.C++语句以分号(;)结束,一行可以写多条语句,一条语句可以分多行写4.所有的对象(变量)必须先定义,或先声明、后使用5.以双引号括起的为字符串常量,里边的\为转义字符例:#includeiostream.h开始结束编写源程序编写源程序编写源程序编译正确?正确?正确?否否否注释:/**/和//编译预处理:#程序体C++程序结构C++精华笔记3/125intx=5,X=10;voidmain(){inty=x*x;couty=x*x=yy=X*X=X*X\n:::::::::::::::::\n;}/*执行结果:y=x*x=25y=X*X=100:::::::::::::::::*/1.7函数函数的组成:函数格式:函数属性标识符函数返回类型标识符函数名(形参说明列表){···}其中形参说明列表:如果有多个形参,各形参之间用逗号(,)分隔说明:1.一个函数如果没有返回值,则函数的返回类型标识符用“void”代替,函数体中不必有return语句(如果有return语句,仅仅起提前返回的作用);否则用返回值的类型标识符,函数体中必须有return语句。2.函数与函数之间的关系是调用与被调用的关系,main()函数只能是调用函数,不可以被调用。3.一个函数内部不可以定义另一个函数,只可以调用另一个函数。4.函数只有定义或被声明后,才可以被调用。函数声明:由函数原型加分号组成。例:intmax(int,int);函数原型:返回类型函数名(形参类型,…,形参类型)例:#includeiostream.hintmax(int,int);//函数声明语句:函数原型加分号voidmain(){intx=109,y=110;coutmax(x,y)endl;//函数调用}intmax(intx,inty)//被调用函数定义{if(xy)returny;elsereturnx;}函数说明部分函数属性[内部函数|外部函数]函数返回类型函数名函数形参名函数形参类型说明对象定义或声明语句执行部分函数体语句…语句C++精华笔记4/125函数:标准库函数用户自定义函数2基本数据类型与输入输出2.1字符集与保留字C++中容许出现的字符:26个大写字母26个小写字母10个数字其他符号:空格+-*/=,._:;?\'~|!#%&()[]{}^C++保留字:2.2基本数据类型数据(对象):常量、变量每个数据都具有类型,即:每个数据必属于某个类型。变量:存储信息的单元,每个变量对应一段连续的内存空间内存空间的最小单位:字节数据类型的作用:编译器预算对象分配的内存空间大小注意:数据无“void”类型,指针有“void”类型不同的计算机,各类型的变量所占内存空间有所不同bool型:在ANSIC++中具有ANSI:美国国家标准协会(AmericanNationalStandardsInstitute)求某个类型的变量所占内存长度:利用运算符sizeof例:#includeiostream.hvoidmain(){shortintx1;intx2;chary;//longdoublez;coutsizeof(x1)sizeof(x2)sizeof(y)sizeof(float)sizeof(double)sizeof(longdouble)endl;}//执行结果:2414882.3变量定义变量:在程序的运行期间,值会变、或值可变的数据量。变量名:每个变量必须有名,即:变量标识符。C++的数据类型基本类型整型:int字符型:char实型(浮点型)单精度型:float双精度型:double构造类型指针类型:type*空类型:void数组型:type[]结构体型:struct公用体型:union枚举型:enum类:classC++精华笔记5/125100121629133225616*316*216*11230x10012883316648*38*28*101231.命名变量名规定:1不能与C++的保留字、库函数名、类名、对象名同名2只能由26个大小写字母、数字和下划线组成3只能以字母或下划线开头命名规则和程序书写风格:变量定义变量定义:每个变量必须被确定类型、变量名。例如:intx,y;注意:一条语句中只能定义同一类型的一个或多个变量规定:变量必须“先定义、后使用”。程序编译时将分配存储单元,及进行语法检查。唯一性:一个变量一个名,不同的名表示不同的变量。2.变量赋值与初始化变量初始化:在定义变量的同时进行赋值例:intx=5,y,z=9;变量赋值:利用赋值运算符进行值的更新例:intx=5;//x初始化为5x=100;//把100赋给xx=x/2+7;//把x/2+7的计算结果赋给x,即:x=573.给类型起“别名”:typedef例:#includeiostream.htypedefshortintI;//把I作为shortint的别名voidmain(){Ix1;intx2;chary;coutsizeof(x1)sizeof(x2)sizeof(y)sizeof(float)sizeof(double)endl;}//执行结果:24148注意:typedef并不产生新的类型2.4常量常量:常数、或在程序运行过程中值始终不变的数据量。例如:x=5+19.7;其中5和19.7就是常量常量有类型:5---整型19.7---实型‘a’---字符型1.整型常量C++提供3种表示整型常量的形式:十进制:123,-123,0;八进制:以0(零)开头的整数常量例如:0123,即:-0123:表示八进制的负数123,为十进制的-83。十六进制:以0x(零和x)开头的整数常量例如:0x123,即:-0x123:表示八进制的负数123,为十进制的-291。例:#includeiostream.hvoidmain(){cout1230123-01230x15-0x150x123-0x123endl;}//执行结果:12383-8321-21291-291C++精华笔记6/125整型常量的类型:整型常量有类型,系统自动识别在整型常量的后面加字母“L”或“l”(小写),表示该常量是长整型的。注意:常量无unsigned型2.实型常量C++提供2种实型常量的表示形式:十进制:由数字和小数点组成。必须带小数点例如:12.123、0.0、.0、0.、9453.13124指数形式:数字E(或e)整数。E前必须有数字,E后必须是整数例如:123E3(或:123e3)即:1.234e5即:有效位:单精度(float)―――7位双精度(double)―――15位实型常量在内存中所占字节数:以double型进行存储,占8字节。但是,在后面加f,则以float型存储,占4字节例:#includeiostream.hvoidmain(){coutsizeof(1.23)sizeof(1.23f)endl;}//执行结果:843.字符常量用单引号括起的单个字符特殊字符以“\”开头例如:'1','0','/','=','a','b','?','%''\n','\t','\\'a='a';a='A';a='\101';8进制的101等于10进制的65,ASCⅡ值为65的字符是:A所以,实际上:a='A';注意:在内存中,字符以ASCⅡ码存储,是以整数表示的所以,字符和整数之间可以互相赋值例:#includeiostream.hvoidmain(){intx1='A',x2='0',x3=0;charc=97;coutx1x2x3cendl;}//执行结果:65480a4.字符串常量用双引号括起的字符序列例如:abc.|*88住宅ok:空字符串:只有一个空字符的字符串a:只有一个字符a的字符串字符串结束标志:'\0'(由系统自动添加)注意:①a与'a'不同!(输出结果相同)②C++语言中无字符串变量!③不能把字符串常量赋值给字符变量!例如:charc;c=a;╳310123510234.1C++精华笔记7/125④统计字符串长度时,不计字符串结束标志。例如:abcd的长度为4,而在内存中实际存放是:abcd\0枚举常量把变量的值一一列举,变量的值只能取其中之一枚举类型的定义:形式1:enum枚举类型名{元素1,元素2,…,元素n};enum枚举类型名枚举变量名1,枚举变量名2,…;例:enumcity{上海,北京,南京,广州,天津};//city为枚举类型名enumcitycity1,city2;//city1,city2为city枚举类型的变量名形式2:enum枚举类型名{元素1,元素2,…,元素n}枚举变量名1,枚举变量名2,…;例:enumcity{上海,北京,南京,广州,天津}city1,cyty2,city3;形式3:可以直接定义枚举变量,而不定义枚举类型名例:enum{上海,北京,南京,广州,天津}city1;枚举类型的使用:例:#includeiostream.henumcity{Shanghai,Beijing,Nanjing,Tianjin=5,Guangzhou};voidff(enumcityx){switch(x){case0:coutShanghai\n;break;case1:coutBeijing\n;break;case2:coutNanjing\n;break;case5:coutTianjin\n;break;case6:coutGuangzhou\n;break;default:cout非法城市!\n;}}voidmain(){enumcityc1,c2,c3,c4;inti=7;c1=(enumcity)i;//不能:c1=i;c2=Nanjing;c3=(enumcity)5;c4=Shang