资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第,2,章 从,C,到,C+,第,2,章 从,C,到,C+,2.1,C+,程序基本组成,2.2,简单的输入,/,输出,2.3,指针与引用,2.4,函数,2.5,new和delete运算符,2.6,其他若干重要的,C+,特性,2.7,应用实例,2.1 C+,程序基本组成,【,例,2.1】,一个最简单的,C+,程序。,#include,using namespace std;,int,main(),cout,hello,students,!,endl,;,return 0;,2.1 C+,程序基本组成,1.include,语句:,#include,C+,的头文件有两类:,一类是,标准的,C+,库头文件,,这些头文件不带“,.h”,;但是必须使用前缀字符“,c”,。例如:,#include/,相当于,#include,另一类,是非准的,C+,库头文件,,这些头文件带“,.h”,。在连接时,编译系统会根据头文件名自动确定连接哪一个库。,2.1 C+,程序基本组成,【,例,2.1】,一个最简单的,C+,程序。,#include,using namespace std;,int,main(),cout,hello,students,!,endl,;,return 0;,使用,标准,C+,库,时,在所有的,include,指令之后,需要加入语句:,using namespace std,;,2.,针对,名字空间,的指令,一个软件往往由多个模块组合而成,,不同,模块间在对标识符命名时就有可能发生,命名冲突。,C+,提供,名字空间,来防止命名的,冲突。,using namespace std;,/,告诉编译程序此程序中所有的标识符都在,std,名字空间中,标识符都可以直接使用而不会发生命名的冲突。,2.1 C+,程序基本组成,2.1 C+,程序基本组成,代码段,int,main(),/,每个,C+,程序有且只有一个,main,()函数,cout,hello,students,!,变量,1,变量,2,变量,n,;,其中,,cin,是预定义的标准输入流对象,,是输入操作符,也称提取运算符。,2.2.2,屏幕输出,在,C+,中,输出操作,可理解为将数据插入到输出流对象中,故称为,插入操作,。,屏幕,输出是标准输出操作,用来将表达式的结果输出到显示器的屏幕上。其一般形式可表示为:,cout,表达式,1,表达式,2,表达式,n,;,其中,,cout,是预定义的标准输出流对象,,是输出操作符,也称插入运算符。用它可以输出各种不同类型的数据。在输出时若要换行,可使用控制符,endl,。,2.2.2,屏幕输出,【,例,2.2】,分析下列程序的输出结果。学会使用输入、输出方法。,2.3,指针与引用,返回首页,2.3.1,指针,2.3.2,引用,2.3.1,指针,指针,是一种特殊的对象,指针的类型是它所指向对象的类型,它的值是它所指向对象的地址值。,例如:,int,*p1,;,/,定义一个指向,int,型的指针,p1,char*p2,;,/,定义一个指向,char,型的指针,p2,float*p3,;,/,定义一个指向,float,型的指针,p3,2.3.1,指针,专门为指针准备的两个运算符,&,和,*,如执行语句,int,p,;,int,*p1,;,p1=&p,;,/&,是一个取地址的运算符,赋值后,p1,才指向具体的,p,。,2.3.2,引用,所谓引用,就是给对象起一个,别名,,使用该别名可以存取该对象。,1.,引用的定义格式,&=,例如:,int,a;,int,&,ta,=a;,其中,,ta,是一个引用名,即,ta,是对象,a,的别名,,ta,和,a,都是,int,型的。,2.3.2,引用,【,例,2.4】,分析下列程序的输出结果,并分析引用的说明和用法。,返回本节,2.3.2,引用,引用的主要用途是用作,函数参数,和,函数的返回值,。,使用引用时要注意以下几点:,建立引用时必须同时,初始化,引用不是变量,它本身没有地址值,引用在初始化被绑定到某个对象上后,将只能永远绑定到这个对象。,没有空引用。下面语句是错误的。,int,&,ri,=NULL;,2.4,函数,返回首页,2.4.1,函数原型与带默认参数的函数,2.4.2,函数的参数传递,2.4.3,内联函数与重载函数,2.4.4,标准库函数,2.4.1,函数原型与带默认参数的函数,1.,函数原型,函数原型标识一个函数的,返回类型,,同时也标识该函数,参数的个数与类型,,这将作为编译程序进行类型检查及函数匹配的依据。,函数原型由函数首部加上分号组成。例如:,int,sum(int,x,int,y),;,2.4.1,函数原型与带默认参数的函数,2.,带默认参数的函数,在,C+,中,在函数原型中可以为一个或多个参数指定,默认值,。,当进行函数调用时,编译器按从左向右的顺序将实参与形参结合,若未指定足够的实参,则编译器按同样的顺序,用函数声明中的默认值来补足所缺少的实参,。,2.4.1,函数原型与带默认参数的函数,对函数参数设置默认值要注意以下几点:,若没有声明函数原型,参数的默认值可在函数定义的头部进行设置,否则必须在函数原型中进行设置。,在一个指定了默认值的参数的,右边,,不能出现没有指定默认值的参数。,设置默认参数可使用表达式,但表达式中不可用局部变量。,2.4.1,函数原型与带默认参数的函数,【,例,2.6】,函数原型与带默认参数的函数的用法。,返回本节,2.4.2,函数的参数传递,函数被调用前,形参没有存储空间,也没有实际的值。,函数被调用时,系统建立与实参对应的形参存储空间,函数通过形参与实参通信。,函数执行完毕,系统收回作为形参的临时存储空间。,C+,有两种参数传递机制:,值传递,(,值调用,),和,引用传递,(,引用调用,),。,2.4.2,函数的参数传递,1.,值传递,void swap(,int,m,int,n),;,swap(a,b,);,5,a,10,b,5,m,10,n,2.4.2,函数的参数传递,【,例,2.7】,示例值传递的方式交换两个对象的值。,2.4.2,函数的参数传递,2.,引用传递,使用引用作函数的形参时,调用函数的实参要用变量名。,实参传递给形参,相当于在被调用函数中使用了实参的别名。于是,在被调用函数中对形参的操作,实质是对实参的直接操作,即数据的传递是,双向,的。,2.4.2,函数的参数传递,【例,2.8,】将引用作为参数,编写函数,交换两个对象的值。,2.4.2,函数的参数传递,C+,引入引用的目的,是为了方便函数参数的传递,。,引用的另一个主要用途是用于返回引用的函数,即,引用返回,。,2.4.2,函数的参数传递,【例2.9】定义一个函数,返回两个数较大值的引用。,2.4.2,函数的参数传递,【例2.10】,引用返回的主要目的是为了将该函数用在,赋值运算符的左边,。,返回本节,2.4.3,内联函数与重载函数,1.,内,联函数,内联函数是使用,inline,关键字声明一个函数,也称内嵌函数,它主要是解决,程序的运行,效率,。,其定义格式如下:,inline,返回值类型,函数名,(,形式参数表,),函数体,2.4.3,内联函数与重载函数,使用内联函数应注意:,递归函数,不能定义为内联函数,内联函数一般适合于不含有,switch,和,while,等复杂的结构且只有,15,条语句的小函数,否则编译系统将该函数视为普通函数,内联函数只能先定义后使用,否则编译系统也将该函数视为普通函数,对内联函数也不能进行异常接口声明,2.4.3,内联函数与重载函数,2.,重载函数,重载函数通常用来对具有相似行为而数据类型不同的操作提供,个通用的名称。,编译系统将根据函数参数的类型和个数来判断使用哪一个函数。,C+,要求重载的函数具有不同的签名。函数签名包括:,函数名,参数的个数、数据类型和顺序,2.4.3,内联函数与重载函数,【,例,2.11】,示例内联函数与重载函数的用法。,返回本节,2.4.4,标准库函数,1.,常用数值函数,除伪随机数发生函数的原型在,cstdlib,头文件中以外,其他所有数值函数的原型都定义在,cmath,头文件中。,2.,常用字符函数,常用字符函数的原型定义在,ctype.h,头文件中。,2.4.4,标准库函数,【,例,2.12】,从键盘输入一个正整数,求出它的平方根。示例标准库函数用法。,返回本节,2.5,new,和,delete,运算符,C+,中使用,new,、,new,、,delete,和,delete,运算符来进行动态内存分配与释放。,运算符,new,分配一个空间;,new,分配,个数组;,delete,释放由,new,分配的单,空间;,delete,释放由,new,分配的数组。,2.5,new,和,delete,运算符,【,例,2.13】,演示,new,和,delete,的基本用法,返回首页,2.6,其他若干重要的,C+,特性,返回首页,2.6.1,符号常量,2.6.2,变量的定义,2.6.3,强制类型转换,2.6.4 string,类型,2.6.5,结构,2.6.1,符号常量,C+,使用,const,修饰符来定义符号常量。,例如:,const,float pi=3.14159;,或,float const pi=3.14159;,返回本节,2.6.2,变量的定义,在,C+,中,任何一个变量在被使用之前必须被定义。,C+,中的变量可以在程序中,随时定义,,不必集中在程序之前。,返回本节,2.6.3,强制类型转换,C+,中有如下两种强制类型转换形式:,或,(,),例如:,int,i,;,float x=,float(i,),;,或,int,i;,float x=(,float)i,;,返回本节,2.6.4,string,类型,C+,提供,string,类型来代替,C,语言的以,null,结尾的,char,类型数组。使用,string,类型必须包含头文件,string,。,2.6.4,string,类型,【,例,2.14】,演示,string,类型的基本用法,返回本节,2.6.5,结构,C+,中的结构与,C,语言结构不同。,struct,不需要出现在结构变量定义的地方。,例如:,给定如结构声明:,struct,Pointdouble,x,y,;,我们可以用如下方式定义结构变量:,Point,p1,p2;,返回本节,2.7,应用实例,返回首页,编写一个学生成绩管理程序。建一个单链表,要求能输入和打印学生成绩,并求出所有学生的平均成绩。,目的:了解,C+,程序的基本结构,掌握,C+,语言所引入的一些新的语言成分在程序中的运用。,2.7,应用实例,返回首页,求平均成绩,输出成绩,输入成绩,学生成绩管理,2.7,应用实例,返回首页,作业,P260,:,1,(,2,)、,2,P261,:,1,(,2,)、,1,(,3,)、,2,(,2,),
展开阅读全文