C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx

上传人:春哥&#****71; 文档编号:4270378 上传时间:2021-07-16 格式:PPTX 页数:360 大小:2.47MB
返回 下载 相关 举报
C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx_第1页
第1页 / 共360页
C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx_第2页
第2页 / 共360页
点击查看更多>>
资源描述

《C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx》由会员分享,可在线阅读,更多相关《C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx(360页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1.1 面向对象程序设计 1.2 C+程序设计 1.3 C+程序的开发过程 1.4 面向对象程序的组成元素,第1章 绪论,1.5 C+程序的编译与调试 1.6 本章小结,2.1 C+数据类型 2.2 变量与常量 2.3 运算符与表达式 2.4 控制结构 2.5 数组 2.6 函数,第2章 C+基础知识,2.7 结构体 2.8 联合体 2.9 指针 2.10 面向过程程序设计规范 2.11 菜单结构的设计与实现 2.12 本章小结,返回目录,2.1 C+数据类型,C+字符集,C+字符集,字母: az;AZ 数字: 0 1 2 3 4 5 6 7 8 9 其他符号: + - * / = , . _

2、 : ; ? | ! # % int,int ,程序举例,void swap(int ,/函数的定义 void swap(int ,程序举例,int vals10;/定义的全局数组变量 int error = -1; int max = 0; int ,/*功能:返回x,y中的较大数*/ int ,返回目录,2.2 变量与常量,标识符与关键字,标识符:程序或系统定义的符号 用来作为变量名、常量名、函数名、类型名、文件名等。 由字母、数字、下划线组成,且由字母或下划线开头的字符串,中间不能有空格 _sum, sum, stu_name, price等为合法的标识符。 cout,52select,

3、a lot,-W,sin 等为不合法标注符。 关键字:也称保留字 是C+编译器预定义的、具有固定含义的标识符,不允许另作它用,常用关键字,变量的定义与初始化,变量定义的语法: 变量的类型变量的名称; 初始化的方法 int a=; intb(1); int c;c=1;,常量与符号常量,常量通过关键字const来定义 语法规则 const 变量类型变量名称; 或 const 变量类型变量名称=初始值; 如: const double pi=3.14;,返回目录,2.3 运算符与表达式,运算符,查看详情,1.算术运算符:+、-、*、 /、 %、+、- 2.赋值运算符:= 、+=、-= 、*= 、/

4、=、%= 3.关系运算符:=、= 、!= 4.逻辑运算符:! 、 else if (条件表达式2) 语句2; else if (条件表达式n) 语句n; else 语句n+1;,单分支结构: if(条件表达式) 语句1; 双分支结构: if(条件表达式) 语句1; else 语句2; switch语句 switch(判断表达式) case 常量表达式1: 语句1; break; case常量表达式2: 语句2; break; / default: 语句n+1; ,循环结构,三要素: 循环变量、循环体和循环终止条件 循环结构 for循环的一般结构 for(表达式1; 表达式2; 表达式3) 语句

5、; while循环的一般结构 while (表达式) 语句; do-while循环的一般结构 do 语句; while (表达式);,程序举例,程序2-7:计算这一天是这一年的第几天,int monthDays = 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; int main() int year, month, day; cout year month day; int sumDays = day;/总天数 for (int i = 1; i month; i+) /忽略闰年 sumDays = sumDays + monthDay

6、si; cout year - month - day is cout year 年的第 sumDays 天n; system(pause);return 0; ,程序举例,程序2-8:输入两个整数m,n,计算其最大公约数,int main() int a, b; cout a b; int m = a, n = b; int r = m%n; while (r != 0) m = n;n = r;r = m%n; cout a , b 的最大公约数是: n endl; system(pause);return 0; ,程序举例,程序2-9:用公式求的近似值,直到最后一项的绝对值小于10-8为

7、止。,#include #include #include using namespace std; int main() double s = 0, t = 1; int sgn = 1, k = 1;,do s = s + t; k = k + 2; sgn = sgn*(-1); t = sgn / double(k); while (fabs(t) 1e-8); cout setprecision(15) s * 4 endl; system(pause); return 0; ,返回目录,2.5 数组,一维数组,概念: 同一类型的多个数据分配一段连续的内存空间 定义: 数据元素类型数

8、组变量名称数组元素的个数; 数据元素类型数组变量名称=初值,初值,.; 初始化: 全部初化,int a=1,2,3,4,5,6; 部分初始化,int a5=1,2,3,; 访问: 下标运算符,数组名下标,程序举例:数组使用,#include #include using namespace std; int main() /数组逆置处理 int myArray = 1, 2, 3, 4, 5 ; int n = sizeof(myArray) / sizeof(myArray0);/计算数组元素的个数 int i, j,tmp; for (i = 0, j = n - 1; i j; i+,

9、j-) tmp = myArrayi; myArrayi = myArrayj; myArrayj = tmp; for (i = 0; i n; i+) cout setw(5) myArrayi; cout endl; system(pause); return 0; ,二维数组,概念:数组的元素又是数组,可看作矩阵 定义: 数据元素类型数组变量名称数组元素的行数数据元素的列数; 数据元素类型数组变量名称数据元素的列数=初值,初值,.; 初始化 分行初始化:例 int a3=1,4,5; 不分行初始化:例 int a3=1,2,3,4,5; 访问: 数组名下标下标,程序举例:设计二维数组程

10、序,输出九九乘法表:,#include #include #include using namespace std; #define COL 10 #define COLUMN 10 int main() int mat COLCOLUMN = 0 ; int i, j; for (i = 1; i COL; i+) /矩阵元素赋值,乘法表 for (j = 1; j = i; j+) mat ij = i*j; for (i = 1; i COL; i+) /输出乘法表 for (j = 1; j = i; j+) cout setw(3) j * i = mat ij; cout endl

11、; ,/将结果写到文件中 ofstream outFile(res.txt);/定义输出文件流 for (i = 1; i COL; i+) for (j = 1; j = i; j+) /将结果写到输出文件流中 outFile setw(3) j * i = mat ij; outFile endl; outFile endl; outFile.close();/关闭输出文件流 fflush(stdin);/清空输入缓冲区 getchar(); return 0; ,字符数组和字符串类,概念: 数组的每一个元素均为字符类型 定义: char 字符数组名称字符数组最多存放的字符元素个数; ch

12、ar *字符指针名=new charN; string 字符串变量名;,程序举例:将数字字符串变为数字,#include #include/C+字符串,是类类型 using namespace std; int main() string numStr; long int number = 0; int singleNum; cout numStr; int i = 0;,while (numStri != 0) /将单个字符变为数字,48是0的ASC码值 singleNum = numStr.at(i) - 48; number = number * 10 + singleNum; i+;

13、cout numStr= numStr endl; cout number= number endl; fflush(stdin); getchar(); return 0; ,返回目录,2.6 函数,函数的定义,概念: 实现某一功能的相关语句组织在一起,并给之注明相应的名称,这种形式的组合就称为函数 功能:C+程序的基本模块,函数组成C+程序 至少含有一个main函数 main是程序运行的入口 分类: 是否为系统预定义,分为库函数和用户自定义函数 是否有参:有参函数和无参函数,函数原型的声明,编译器遇到一个函数调用时,需要判断该函数调用是否正确,该机制即函数原型。 C+中,函数声明就是函数原

14、型 函数原型的声明 函数原型是一条程序语句,它必须以“;”分号结束; 由函数返回类型、函数名和参数表构成 函数返回值类型 函数名(); int area(int,int); int area(int length,int width); 函数原型和函数定义在返回类型、函数名和参数表上必须完全一致,函数的调用,直接调用 适用于函数的返回值为空,或返回值不需要被保存的情况 表达式调用 将函数调用放到一个表达式中,让其参与运算 一般用在赋值表达式中 y=sin(x); 嵌套调用 一个函数调用的结果作另一个函数调用的参数 m=max(a,max(b,c); 参数传递 传值 传引用 传地址,C+的函数调

15、用过程就是栈空间操作的过程 (1)建立被调函数的栈空间; (2)保护调用函数的运行状态和返回地址; (3)传递参数; (4)将控制权转交给被调函数; (5)函数运行完成后,复制返回值到函数数据块的底部; (6)恢复调用函数的运行状态; (7)返回到调用函数。,分析程序的执行过程,int funcA(int x, int y); int main( ) int a=6, b=12; a=funcA(a, b); int funcA(int x, int y) int n=5; n=x+y; return n; ,运行程序,执行main( ),调用函数funcA(a, b),main函数的临时空间

16、,调用函数funcA(a, b), 执行n=x+y;,调用函数funcA(a, b),执行return n;,返回到main( )函数中,a=funcA(a, b);,内联函数,内联扩展(inline expansion)简称为内联(inline),内联函数也称为内嵌函数 函数的定义或声明前加上关键字inline 一个函数定义为内联函数后,在程序编译阶段,编译器就会把每次调用该函数的地方都直接替换为该函数体中的代码,由此省去函数调用的空间分配、保存现场、参数传递和返回操作等,从而加快整个程序的执行速度 内联函数可以在一开始仅定义或声明一次,但必须在函数被调用之前定义或声明,函数的重载,功能相似

17、而参数类型不同的函数可以使用相同的函数名,这就是函数重载 参数类型不同 void sort(int *arr,int n); void sort(float*arr,int n); 参数个数不同 int max(int a,int b); int max(int a,int b,int c); 参数顺序不同 void find(float *arr,int n,float x); void find(float *arr,float x,int n);,#include using namespace std; int ABS(int); double ABS(double); float A

18、BS(float); int main() int x1=-12; double x2=-12.0; float x3=-12.0; coutABS(x1)endl; coutABS(x2)endl; coutABS(x3)endl; ,int ABS(int a) return (a0?a:-a); double ABS(double a) return (a0?a:-a); float ABS(float a) return (a0?a:-a); ,程序举例:返回一个数的绝对值,只要参数个数不同,参数类型不同,参数顺序不同,函数就可以重载。然而,只是返回类型不同则不允许重载。 void f

19、unc(int a); void func(char a); void func(char a, int b); void func(int a, char b); char func(int a); ,C+按下列三个步骤的先后顺序找到匹配的函数并调用之。 寻找一个严格匹配,如果找到了,就调用那个函数。 通过相容类型的隐式转换寻求一个匹配。 通过用户定义的转换寻求一个匹配,若能查出唯一的一组转换,就用那个函数。,#include using namespace std; void print(int); void print(double); int main() print(1); prin

20、t(1.0); print(a); print(3.14f); ,输出: int: 1 double: 1 int: 97 double: 3.14,void print(int a) coutint: aendl; void print(double a) coutdouble: aendl;,程序举例:编程求圆、矩形、梯形的面积,double area(double r) return 3.14*r*r; double area(double h,double w) return h*w; double area(double a,double b,double h) return (a+

21、b)*h/2;,#include using namespace std; double area(double r); double area(double h,double w); double area(double a,double b,double h); int main() double r=23.3; double h1=12,w=5, a=7,b=8, h2=3; coutarea(r)endl; coutarea(h1,w)endl; coutarea(a,b,h2); ,带缺省值的函数,C+可以给函数声明中的参数使用默认值,这样在函数调用时,对应的实参就可以省略。 #in

22、clude using namespace std; int func(int a=2); int main() coutfunc(5)endl; coutfunc()endl; int func(int a) return a; ,默认参数规则,一般来说,默认参数总是在函数声明时描述。 函数参数默认值只能从后往前设置,而实参只能从前往后给出。 例: void func(int a=1, int b, int c=3); void func(int a, int b=2, int c=3); func(10,15,20); func( ); func(12,13); func(2, , 20)

23、; ,递归函数,在函数体中出现调用自身的函数称为递归函数。 例:阶乘n!的数学函数描述为 其对应的C+函数描述为: unsigned f(unsigned n) if(n=1) return 1; return n*f(n-1); 注意:n的取值范围1n12,例:Fibonacci数列的数学描述为 其等价的C+函数为: unsigned int f(unsigned int n) if(n=0|n=1) return n; return f(n-1)+f(n-2); n的取值范围1n46,递归函数,递归函数在运行中,其调用与被调函数的指令代码是同一个函数副本,只不过各个不同运行中的调用点,作为

24、状态的一部分,在栈中被分别保护起来。因此,是C+的函数机制决定了递归操作的可能性与形式。,递归函数,例:n!的函数,当调用f(3)时,其运行栈描述如图所示,递归条件,递归不能无限制地调用下去,因为栈空间是有限的,所以递归函数是有条件地调用自身。例如阶乘函数中的“if(n=1) return 1;”当n为1时,函数就不再递归了。 递归函数就有递归调用语句,且递归调用应有参数,参数值应该是逐渐逼近停止条件。例如f(n-1)相对f(n)来说,是逐渐逼近了停止条件。 递归条件应先测试,后递归调用。无条件递归的逻辑错误,编译器是检查不出来的。,返回目录,2.7 结构体,概念:结构体则是任意类型元素的一个

25、聚集,把类型不一样的一组数据放到一块连续的内存空间 结构体类型的定义: struct 结构体类型名称 数据类型1成员名称; 数据类型2成员名称; . ; 结构体变量的定义 结构体类型名称 结构体变量的名称; 结构体成员的访问 结构体变量名.结构体成员名,程序举例:结构体类型的定义,数组,指针的综合应用,#include #include using namespace std; /Point类型结构体的定义 struct Point int x, y; ; /函数原型的声明 void inputPoint(Point *poly, int n); void outputPoint(Point

26、*poly, int n);,int main() Point polygon5;/定义五边形 int n = sizeof(polygon) / sizeof(polygon0); inputPoint(polygon, n); outputPoint(polygon, n); fflush(stdin); getchar(); return 0; ,/输入结构体数组元素的值 void inputPoint(Point *poly, int n) cout polyi.x polyi.y; ,/输出Point结构体元素的值 void outputPoint(Point *poly, int

27、n) cout x y ) endl; ,返回目录,2.8 联合体,概念:union可以用相同的存储空间存储不同类别的数据类型,从而节省内存空间 所有成员相对于基地址的偏移量都为0 联合体(union)中的各变量是“互斥”的 联合类型的定义形式 union 联合类型名 数据类型1成员名称; 数据类型2成员名称; . ;,程序举例:联合体类型的定义与应用,typedef union char a; int b; double c; Demo; int main() char ch=H; int i = 5; double c = 3.14; cout ch 占 sizeof(ch) 个字节n;

28、cout i 占 sizeof(i) 个字节n; cout c 占 sizeof(c) 个字节nn;,Demo d; cout Demo 类型 变量d 占 sizeof(d) 个字节n; d.a = ch; cout d.a= d.a endl; d.b = i; cout d.b= d.b endl; d.c = c; cout d.c= d.c endl; cout a= d.a b= d.b c= d.c endl; system(pause); return 0; ,返回目录,2.9 指针,指针的定义与使用,程序运行中的每一个变量都分配有一块内存空间,对应的内存的起始编号称为这个变量的

29、地址 直接访问:程序通过变量名来访问这块空间中的数据的访问方式 指针变量:保存另一个变量地址的变量 间接访问:通过指针变量来访问它所存的变量的方式 多级指针:若指针变量所指向的变量的类型是指针类型 指针变量的定义格式 一级指针定义:数据类型 *变量名; 二级指针定义:数据类型 *变量名; 三级指针定义:数据类型 *变量名;,程序举例:一级指针的简单使用,int main() int num1 = 3; /定义整型变量的指针,并初始化指针变量的地址为num1的地址 int *pointer = ,指针变量的基本操作,指针变量初始化与赋值的语法格式 数据类型 *指针变量=初始地址表达式; 指针变量

30、赋值 指针变量名=地址表达式; 其他运算 取值运算:* 算术运算:+n,-n 相减运算:p1-p2 比较运算:p1p2,程序举例:指针的各种运算,通过数组中地址的运算呈现,#include #include using namespace std; void output(int *arr, int n); int main() int intArray = 1, 2, 3, 4, 5 ; int n = sizeof(intArray) / sizeof(intArray0); output(intArray, n);/数组名作函数的参数 int *pPointer = intArray;

31、int i = 0; while (pPointerintArray + n)/指针的+n运算 *pPointer = i * 2 + 1; pPointer+;/指针的+运算 i+; ,pPointer = intArray; output(pPointer, n);/指针作函数的能数 system(pause); return 0; /倒序输出数组元素值 void output(int *arr, int n) int *p; p = arr + n - 1;/指向数组元素的指针 for (; p = arr; p-)/指针-运算 cout setw(3) *p; cout endl; ,

32、动态内存分配,运行的程序的内存空间内存分成5个区 全局数据区(datat area),代码区(code area),栈区(stack area)、堆区(heap area)、字符串常量区 程序运行过程中才能确定数据大小时,需要根据问题的规模动态分配 动态地分配内存new运算符 指针变量名=new 类型名(初值列表); 指针变量名=new 类型名下标表达式; 指针变量=new 类型名下标表达式1 下标表达式2 .; 内存释放delete delete 指针变量名; delete 指针变量名;,程序举例:动态申请一维数组,int *NewArray(int n); /动态申请一维数组的内存空间 v

33、oid output(int *arr, int n); /显示数组元素的值 int main() int n; cout n; int *array = NewArray(n); for (int i = 0; in; i+) arrayi = i; output(array, n); deletearray; system(pause);return 0; ,/动态申请一维数组的内存空间 int *NewArray(int n) int *p; p = new intn; return p; /显示数组元素的值 void output(int *arr, int n) int *point

34、erArr = arr; for (; pointerArrarr + n; pointerArr+) cout *pointerArr; cout endl; ,指针与函数,指针作函数的参数 指针作函数的参数是一种地址传递方式 指针可以作为函数的形参,也可以作为函数的实参 实参和形参指针变量指向同一内存地址,实现参数双向传递 指针函数:指针类型函数 函数声明其返回值为指针类型时,这个函数就称为指针型函数 主要目的就是要在函数调用结束时把大量的数据从被调用函数返回到主调函数 指针函数定义: 数据类型 *函数名(参数表)函数体 函数指针:函数指针就是用来存储函数的入口地址的指针变量 函数的指针定

35、义格式:返回类型 (*函数指针名)(形式参数表); 函数指针赋值:函数指针名=函数名; 调用函数指针指向的函数:函数指针名(实参表);,程序举例:使用函数指针实现各类函数的调用,#include #include using namespace std; #define FUN_MAX 0 #define FUN_MIN 1 #define SIZE sizeof(map)/sizeof(fun_map) string menu = 计算两数的最大值,输入0, 计算两数的最小值,输入1 ; int max(int x, int y); int min(int x, int y); void d

36、ispMenu(string menu, int n);,struct fun_map int msg; int(*pfn)(int, int); /定义指向函数的指针作结构体的成员 ; int main() int a, b, m; int sel; /定义fun_map类型的数组并初始化 fun_map map = FUN_MAX, ,for (int i = 0; i a b; dispMenu(menu, lenMenu); cin sel; if (sel = mapi.msg) m = mapi.pfn(a, b); cout m= m endl; system(“pause”);

37、 return 0; ,int max(int x, int y) return (xy ? x : y); int min(int x, int y) return (xy ? x : y); void dispMenu(string menu, int n) for (int i = 0; i n; i+) cout menui endl; cout endl; ,指针数组,指针数组:数组元素为指针的数组 一维指针数组的定义形式 数据类型 *数组名数组元素的个数; 使用方式 指针数组作为函数参数 指针数组用于指向若干字符串,程序举例:带参的main函数,#include stdafx.h

38、#include using namespace std; int main(int argc, _TCHAR* argv) for (int i = 0; i argc; i+) cout argvi endl; system(pause); return 0; ,返回目录,2.10面向过程程序设计规范,写清楚的注释 使用有意义的名字 使程序结构清晰 使用缩进来表示程序中的控制范围 用户交互时能给出有效的提示信息 不要直接使用ASC码值。这样会影响程序的可移植性 注意整数的溢出,尽量少的使用难理解的表示方式 在写关系表达式时,不要连用关系运算符 使用循环结构时,不管循环体几个语句,最好都用花

39、括号括起来 每个函数只做一件事情,不要将多个功能组合在一个函数中,返回目录,2.11菜单结构的设计与实现,综合应用数组、循环、选择结构 菜单结构的设计与实现 数组元素的输入输出、排序、最大值、最小值、均值的计算 给用户提供一个交互的界面 根据用户的选择执行数组的相应操作 程序中的函数有: void dispMenu(string menu, int n); /显示菜单 void inputArray(int arr, int n); /输入数组元素的值 void outputArray(int arr, int n); /输出数组元素的值 int maxValue(int arr, int n

40、); /计算数组元素的最大值 int minValue(int arr, int n); /计算数组元素的最小值 int average(int arr, int n); /计算数组元素的平均值 void sortSel(int arr, int n); /对数组元素做选择法排序,2.12 本章小结,(1)基本数据类型与各类构造类型。 (2)讲解了主要的表达式的使用方式和使用规则。 (3)程序的控制结构。三种循环结构在C+中的使用。 (4)一维数组,二组数组的定义、初始化及访问。 (5)函数的定义,声明,调用方式,调用机制,递归函数等C中的知识及C+中的内联函数,重载函数,带缺省参数值的函数。

41、 (6)结构体及联合体类型的定义和使用。 (7)指针的定义、初始化、赋值、运算;动态内存分配与释放,指针函数,函数指针,指针数组。,3.1 变量的类型 3.2 标识符的作用域与可见性 3.3 编译预处理命令 3.4 多文件编程,第3章 C+变量的类型及程序结构,3.5 名字空间 3.6 数学函数曲线绘制的设计与实现 3.7 本章小结,返回目录,3.1 变量的类型,全局变量与局部变量,1.全局变量(global variable) 定义在函数体外部的变量 能被所有函数访问使用 便 于数据的共享 同时也是很危险,易于被修改 2.局部变量(local variable) 定义在函数或复合语句中的变量

42、 只能在函数或复合语句中访问使用,变量的存储类型,auto:变量缺省的类别,局部的,动态存储区的栈区分配内存空间 register:生存期是局部的 static:生存期是全局的,静态存储区分配内存空间 静态全局变量:static修饰的全局变量,只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以 静态局部变量:始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束 extern:全局变量缺省的存储类别 在静态存储区分配内存空间,分析变量的作用域与可见性,void func(); int n = 1; int mai

43、n() static int a; int b = -10; cout a: a b: b n: n endl; b += 4; func(); cout a: a b: b n: n endl; n += 10; func(); system(pause);return 0; ,void func() static int a = 2; int b = 5; a += 2; n += 12; b += 5; cout “a:” a “ b:” b; cout n: n endl; ,返回目录,3.2 标识符的作用域与可见性,块作用域(block scope):在函数定义中由一对花括号括起来的

44、一段程序单元 作用域从说明点开始,直到结束块的右花括号处为止 函数作用域(function scope):整个函数定义所构成的程序段 在函数定义内有效 类作用域(class scope):简称类域,在类的定义中由一对花括号所括起来的部分 类的名称在整个类中是已知的,在类外是不可见 作用域为类的成员只能被通过对象调用 文件作用域(file scope):也称“全局作用域”,所有函数定义之外定义 作用域为从定义处到整个源文件结束全局变量缺省的存储类别 定义的全局变量和函数都具有文件作用域 标识符的作用域延伸到包含它的新的文件中,分析程序中标识符的作用域,int i = 1; void fun()

45、int i = 2; cout i: i :i i endl; class Point int i, j; public: void disp() cout i , j endl; ;,int main() int i = 3; cout i; cout i endl; system(pause); return 0; ,返回目录,3.3 编译预处理命令,文件包含命令#include,查看详情,#include (系统):系统库,位置在开发环境的路径下 #include using namespace ; #include/输入输出流 #include/C+中的字符串类 #include/C+

46、中的格式控制操纵算子 #include/C+中的数学库函数 using namespace std; #include “文件名”(自定义):用户定义的头文件,位置在工程目录下,宏定义#define,#define 标识符 表达式 #define PI 3.14 #define 标识符(参数) 表达式 #define max(x),(y) (x)(y)?(x):(y) 宏定义中包含两行以上命令: 此时必须在最右边加上”且该行”后不能再有任何字符 #define MAX(T,x,y) T max(T x, T y) return (xy ? x : y); ,条件编译#ifdefine,#ifd

47、ef.#endif #ifdef 标识符 程序段1 #else 程序段2 #endif if.#endif #if 条件1 程序段1 #elif 条件2 程序段2 . #else 程序段n #endif,#ifndef.#endif #ifndef 宏名 程序段1 #else 程序段2 #endif,返回目录,3.4 多文件编程,多文件结构 C+程序称为一个项目,一个项目由一个或多个文件组成,一个文件可以包函多个函数的定义 头文件:.h扩展名,包含其他文件要用的库的声明及不分配空间的声明 如类的定义 源文件:.cpp扩展名,函数的具体代码及分配空间的定义 编译单元:源程序文件 各个源程序文件进行分别编辑,编译,再进行连接 编辑形成扩展名是.cpp扩展名的文件 编译形成.obj扩展名的文件 连接形成.exe扩展名的文件,C+多文件程序结构,面向对象的程序的结构,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁