1.6k likes | 1.78k Views
第二章 C++ 语言基础. 面向对象程序设计. 本章内容提要. C++ 的概述 C++ 程序的基本要素 C++ 数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令. 本章内容提要(第 1 节). 1 、主要特点; 2 、 C++ 程序与 C 程序; 3 、 C++ 的扩充; 4 、在 VC 下编制 C++ 程序;. C++ 的概述 C++ 程序的基本要素 C++ 数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令. 本章内容提要(第 2 节). C++ 的概述 C++ 程序的基本要素 C++ 数据类型
E N D
第二章 C++语言基础 面向对象程序设计
本章内容提要 • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令
本章内容提要(第1节) 1、主要特点; 2、C++程序与C程序; 3、C++的扩充; 4、在VC下编制C++程序; • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令
本章内容提要(第2节) • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令 1、标识符; 2、关键字; 3、常量和变量; 4、运算符和表达式;
本章内容提要(第3节) • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令 1、基本的数据类型; 2、const常量类型; 3、数组; 4、指针; 5、字符串; 6、结构; 7、枚举; 8、用typedef定义类型;
本章内容提要(第4节) 1、作用域和生存期; 2、存储类型; 3、作用域限定符; 4、动态内存分配; • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令
本章内容提要(第5节) • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令 1、条件语句; 2、循环语句; 3、转移语句;
本章内容提要(第6节) • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令 1、函数定义、调用和函数声明; 2、函数参数的默认值; 3、内联函数; 4、引用;
本章内容提要(第7节) • C++的概述 • C++程序的基本要素 • C++数据类型 • 变量的作用域与存储类型 • 控制语句 • 函数 • 编译预处理指令 1、#include文件包含 2、#define宏定义 3、条件编译指令;
C++的主要特点 • C++是由C扩充而来。除了与C兼容,C++还继承了C的以下特点:丰富的运算符和数据类型、结构化的程序设计方法、高效的机器代码、良好的可移植性。 • 支持面向对象程序设计的方法。 • C++的错误检查机制强,提供了专门的机制检查类和异常处理功能。 • C++有很多成熟的编译器:Visual C++、C++ Builder、Borland C++和IBM的VisualAge C++。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++程序与C程序 C语言程序: /*一个简单的C程序: simple.c*/ #include <stdio.h> void main(void) { printf( “ Hello World !\n ” ) ; /*输出*/ } 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++程序与C程序 C++语言程序: // 一个简单的C++程序:simple.cpp #include <iostream.h> void main(void) { cout<<" Hello World !\n "; // 输出 } 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++程序与C程序的比较 1.C++程序与C程序的结构完全相同。 2.C源程序文件的扩展名为C,C++源程序文件的扩展名为CPP。 3.C注释使用符号“/*”和“*/” ;C++除了支持这种注释,还提供了一个双斜线“//”注释符。 4.C程序所包含的标准输入、输出的头文件是stdio.h,通过调用函数来完成;而C++程序可以包含标准输入、输出流的头文件iostream.h,通过使用标准输入、输出流对象来完成。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C和C++有什么不同? • 从机制上:c是面向过程的;c++是面向对象的,提供了类。 • 从适用的方向:c适合要求代码体积小的,效率高的场合;c++适合更上层的,复杂的。 • 从名称上也可以看出,c++比c多了+,说明c++是c的超集。 • C语言是结构化编程语言,C++是面向对象编程语言。C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++程序基本结构 • 一个C++程序可以由多个函数构成; • 每个程序都从主函数main()开始执行,从主函数返回时结束执行; • 组成程序的语句主要包括声明语句和执行语句; • 声明语句用于声明变量和函数; • 执行语句包括:赋值语句、表达式语句、函数调用语句和流程控制语句等,它们写在一个函数中(包括主函数)。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
例:输入一个学生三门课的成绩,计算其平均值,并根据其值输出评语。例:输入一个学生三门课的成绩,计算其平均值,并根据其值输出评语。 #include <iostream.h> void main() { int math, chem, phy, ave; cout<<"Enter the scores:"; cin>>math>>chem>>phy; ave=(math+chem+phy)/3.0+0.5; if (ave>=90) cout<<"Excellent"<<'\n'; else if(ave>=60 && ave<90) cout<<"Pass"<<'\n'; else cout<<"Fail"<<'\n'; } 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++程序的书写格式 • 一行写一条语句。 • 长语句可写在多行,用换行符号’\’,但不能将一个单词分两行写。 • 为了提高可读性,采用合理的缩格书写方式。 • 大括号“{”和“}”占一行。 • 为源代码加入注释,使用“//”和“/*”、“*/”。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++对C的扩充 (1)当函数定义放在函数调用之后时,C程序函数原形有时可省略,而C++函数原形(声明)必不可少。C++还要求函数所有参数在函数原形的圆括号中声明。 例如: int Max(int a, int b) {…}; //C++,C都可以 int Max(a, b) //C++非法,C可以 int a; int b; {…} 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++对C的扩充 (2)在C语言中,函数和语句块(花括号“{}”之间的代码)的所有变量声明语句必须放在所有执行语句之前。而C++中变量声明语句不要求放在函数和语句块的开始位置,可以把变量声明放在首次使用变量的附近位置,这样可提高程序的可读性。 (3)C++用new和delete运算符取代C的内存分配和释放函数malloc()和free()。(可以检测内存泄漏) 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++对C的扩充 (4)标准C++提供了字符串类,可以替代C函数库中的字符数组处理函数。 (5)进行输入、输出操作时,C++用控制台输入、输出流对象(在头文件iostream.h中进行了类的声明)替代C的stdio函数库,利用“>>”流提取运算符或“<<”流插入运算符,分别将数据对象从输入流提取出来或插入到输出流,从而完成数据的输入和输出。 使用C++面向流的输入、输出方式提高了程序的可读性,减少了错误的发生。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
例 编写程序利用标准输入流接收用户从键盘输入的数据,利用标准输出流将运算结果输出到屏幕。 内 容 提 要 #include <iostream.h> void main(void) { cout<<“The value of x , y , z :" ; int x , y , z ; // 声明变量 cin>>x>>y>>z ; // 从键盘读取数据 cout<<“Sum: "<<x+y+z<<'\n'; } C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
三种生成控制台程序的方式 内 容 提 要 • 1、先生成空项目,然后添加C++源文件。 • 2、生成简单、”Hello world”和支持MFC的程序。 • 3、新建C++源文件,然后编译并生成项目。 • (必须先建立文件夹) C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
两种写法 #include <iostream> using namespace std; void main() { std::cout<<"Hello!"<<std::endl; } #include <iostream.h> void main() { cout<<"Hello!"<<endl; } 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
iostream与iostream.h有什么区别? • #include <iostream> using namespace std;是C++的风格,这样做非常好。#include <iostream.h>是C的风格,不提倡. • iostream是98年C++新标准; iostream.h等在新编译器中都不支持了(如VC7,DevC++),必须用新标准(不带.h) . 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
cout, cin, cerr , clog • cout 标准输出流; cin 标准输入流 ; cerr 无缓冲错误输出流 ;clog 带缓冲错误输出流 ; • cerr与cout的最大不同是cerr是不带输出缓冲的,而cout是带输出缓冲的。送到cerr中的东西会立即输出,而cout则要等缓冲满了,或遇到endl等时才会输出。 • cerr和clog,输出到标准输出设备,一般来说就是你的显示器或打印机。 cout可定向输出位置,例如显示器或打印机,文件等。 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C:\>test.exe > a.txt #include <iostream.h> int main() { cout<<"cout!"<<endl; cerr<<"cerr!"<<endl; clog<<"clog!"<<endl; return 0; } • Cerr! • Clog! 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
‘\n’与endl的区别 • ‘\n’表示的是换行符,起单纯的换行作用(只提供一个换行符);endl是一个预定义的iostream操纵符,endl在输出流中插入一个换行符,然后刷新输出缓冲区。 • 在C++中,一般不写:cout<<'\n';而是写成:cout<<endl; 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
I/O流控制符 “#include <iomanip.h>” 1)浮点显示控制a)setprecision(n) 有效数字个数(默认6)b)setprecision(n)+setiosflags(ios::fixed) 设置小数位数c)setprecision(n)+setiosflags(ios::scientific) 指数形式输出时小数位数 2)设置输出宽度setw(n) 3)设置输出形式八进制和十六进制dec(十) 、oct(八)、hex(十六) 4)设置填充字符setfill(‘')+setw(n) 5)设置对齐方式setiosflags(ios::left) setiosflags(ios::right) (默认) 6)设置强制显示小数和符号setiosflags(ios::showpoint) setiosflags(ios::showpos) 内 容 提 要 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
main函数 内 容 提 要 • 具有默认的返回类型,以及两个默认的参数:一个整数和一个指向字符数组的指针。 • 可以给这两个参数名任何标识符,但习惯上采用argc和argv来命名,例如: int main(int argc, char *argv[]) { for(int i=0; i<argc; i++) cout<<arga[i]<<endl; • return 0; } • argc至少为1,argv[0]为该程序的路径; C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++程序基本要素 内 容 提 要 程序由语句组成,语句由基本要素组成。任何一种程序设计语言都有自己的一套语法规则以及按照语法规则构成的元素,程序基本要素就是这样一种具有独立语法意义的元素。C++程序基本要素主要包括标识符、关键字、常量、变量、运算符和表达式等。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
标识符 内 容 提 要 • 标识符是程序员或系统定义的符号,用以标识变量、函数、对象等。 • 标识符由字母、数字和下划线组成,它必须以字母或下划线开始。 • 为标识符取名时,尽量使用能够反映其用途的单词或缩写,这样可提高程序的可读性。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令 例如:GetPersonCounts() get_person_counts() x,y,sum,length,Area,Myfun,m_xPos,CPerson,person1
关键字 内 容 提 要 • 关键字是C++编译器预定义的、具有固定含义的保留字,在程序中它们不能被作为一般的标识符使用。 • C++增加了C不具有的关键字,并且不同C++编译器含有不同的关键字。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令 auto,bool,break,case,char,class,const,continue,default,delete,do,double,else,enum,extern,false,float,for,friend,goto,if,inline,int,long,new,operator,private,protected,public,return,short,signed,sizeof,static,struct,switch,template,this,true,try,typedef,union,unsigned,using,virtual,void,while
常量和变量 内 容 提 要 • 在程序中使用的数据有常量和变量两种形式; • 常量是不能被程序改变的固定值; • 变量是可以被程序改变的数据。 • 常量和变量的主要区别在于:常量不占内存空间,不能为常量赋值;而变量需要占内存空间,可以给变量赋不同的值。(包括被const修饰的常量) • 不管常量还是变量,程序中使用的每一个数据都属于一种特定的数据类型。 • 在使用变量之前,必须先利用标识符声明变量。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
变量声明的一般形式 内 容 提 要 <数据类型> <变量名1> [=<初始值1>], <变量名2> [=<初始值2>],…; 例如: int x; float radius=123.56f; int x, y=100; C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
运算符和表达式 内 容 提 要 • 运算是对数据进行加工的过程,表示各种不同运算的符号称为运算符,而参与运算的数据称为操作数。 • 运算符实质上是系统预定义的函数名,而进行运算就是调用一个函数。 • 按运算符和操作数的运算性质,运算符可分为算术运算符、逻辑运算符、关系运算符和其它运算符, +、-、*、/、%、++、()、=、+=、->、&&、<、<=、new、delete C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
运算符的结合性 内 容 提 要 C++中几乎所有运算符的结合律都是从左至右(右结合?)的,但下面三种是从右至左(左结合?)的: 1、赋值运算符(简单赋值运算符和复合赋值运算符); int a=12; a += a - = a*a; //最后a=-264 2、条件运算符(?:) x>y?x:u>v?u:v 等效于 x>y?x:(u>v?u:v) 3、unary (单目或一元)运算符。++++a; C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
不同的编译器结合的操作可能有不同的结果 内 容 提 要 如: int i=3; int b=(++i)+(++i)+(++i); 在VC下为16,在TC30下为15。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
表达式 内 容 提 要 • 一个表达式由常量、变量、函数调用和运算符组成,每个表达式都将产生一个值,并且具有某种类型(称为该表达式的类型)。 • 表达式隐含的数据类型取决于组成表达式的操作数的类型。 • 在对一个表达式求值时,优先级高的运算符先运算,优先级低的运算符后运算 例如: a+b+max(a+b); x+y+10.5; area=PI*radius*radius; (a>b) && (x<=y) C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
C++数据类型 内 容 提 要 数据是程序加工的对象。C++将数据分为不同的数据类型,不管常量还是变量,它们都属于某一种数据类型。数据类型规定了数据的存储结构和可以进行的运算。 C++中的数据类型分为:基本数据类型、指针类型和构造类型三大类。构造类型包括数组、结构和枚举、共用体等类型。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
定义变量的数据类型 内 容 提 要 int num, total; float v, r, h; int a=3; // int a(3); char c=‘A’; long lx=12345678; unsigned int nWidth; 可以使用运算符“( )”进行强制类型转换: float x=123.56; int i=(int)x; // i=123 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令
变量的初始化和赋值 内 容 提 要 • 初始化 int iIndex = 0; C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令 • 赋值 int iIndex; iIndex = 0;
const常量类型 内 容 提 要 • const常量类型表示一个“常值变量”,即值不能被改变的变量。 • 声明一个const型变量只需在数据类型说明前加上关键字const。 const int size=20; • 用const声明的变量必须用常量或常量表达式初始化。 C++的概述 C++程序的基本要素 C++数据类型 变量的作用域与存储类型 控制语句 函数 编译预处理指令