版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 C语言基础语言基础3.1、C+语言的特点语言的特点3.2、简单的简单的C+程序程序3.3、C+编程简介编程简介 3.4、C+基本数据类型基本数据类型 3.5、表达式表达式3.6、C+基本语句基本语句 3.7、函数函数3.8、const修饰符修饰符 第三章第三章 C语言基础语言基础3.9、动态内存分配运算符动态内存分配运算符new和和delete 3.10、作用域运算符作用域运算符3.11、引用引用3.12、C+针对针对C语言的改进语言的改进3.13、综合训练综合训练3.1、C+语言的特点语言的特点(1)C+保持与保持与C兼容:兼容: C+=C+面向对象面向对象(2) 用用C+编写
2、的程序可读性更好,代码的结构更编写的程序可读性更好,代码的结构更加合理加合理 (3) 生成的代码的质量高,运行速度快生成的代码的质量高,运行速度快(5) 支持面向对象的机制,可以方便的构造出模拟现支持面向对象的机制,可以方便的构造出模拟现实问题的实体和操作实问题的实体和操作(4) 从从开发时间开发时间、费用费用到软件的到软件的可重用性可重用性、可扩充性可扩充性、可维护性可维护性和和可靠性可靠性等方面有了很大的提高等方面有了很大的提高 A、 C+编译器可编译编译器可编译C程序;程序;B、C语言的语言的库函数和实用软件库函数和实用软件可以用于可以用于C+中中3.2、简单的、简单的C程序程序1.#i
3、nclude 2.int add(int a,int b);3.int main()4.5.int x,y,sum;6.cout“Enter two numbers:”x; /从键盘输入变量从键盘输入变量x的值的值8.ciny; /从键盘输入变量从键盘输入变量y的值的值9.sum=add(x,y); /调用函数调用函数add,将得到的值赋给变量,将得到的值赋给变量sum10.cout“The sum is:”sumxy;3.3、C+编程简介编程简介 头文件头文件主函数主函数main()注释注释新的输入输出语句新的输入输出语句C+源程序的组成结构:源程序的组成结构: 3.3、C+编程简介编程简介
4、现到现到类库类库中查找,再到中查找,再到当前工程所在目录当前工程所在目录查找,最后查找,最后到默认路径查找到默认路径查找与与 “”“”的区别的区别: “”“” 现到现到当前工程所在目录当前工程所在目录查找,再到查找,再到类库类库中查找,最后中查找,最后到默认路径查找到默认路径查找与与 “”“”在用户定义了与头文件同名的文件时在用户定义了与头文件同名的文件时需要需要注意注意3.3、C+编程简介编程简介/符号的注释范围是从符号的注释范围是从/开始到这一行结束(也就开始到这一行结束(也就是从是从/符号到换行符号之间的范围)符号到换行符号之间的范围)注释注释: /*.*/与与/均可使用,但没有均可使用
5、,但没有/符号方便符号方便3.3、C+编程简介编程简介试比较下面两种输入输出:试比较下面两种输入输出:/*c语言的输入输出语言的输入输出*/int a ,b ;scanf(“%d”, &a ) ; /输入变量输入变量aprintf(“%d”, b ) ; /输出变量输出变量b/*c+语言的输入输出语言的输入输出*/int a ,b ; cina ; /输入变量输入变量acoutb); 4、布尔类型布尔类型 :用于表示用于表示真、假真、假的数据类型的数据类型布尔类型分配布尔类型分配1个字节的空间个字节的空间特殊的存放方式,使得表数范围、精度提高特殊的存放方式,使得表数范围、精度提高仅有仅
6、有true(真)(真)和和false(假)(假)两个取值两个取值3.4、C+基本数据类型基本数据类型例如错误的声明:例如错误的声明:void a ;5、空类型空类型 :空类型的空类型的作用作用:(1)一个是描述一个函数没有返回值,例如:一个是描述一个函数没有返回值,例如: void f(int x) ; 没有空类型的对象或数据存在,也就是说没有空类型的对象或数据存在,也就是说空类型是不用空类型是不用作变量的类型作变量的类型(2)描述一个指向描述一个指向不明类型不明类型对象的指针,例如:对象的指针,例如: void *p ; 3.4、C+基本数据类型基本数据类型6、用户自定义类型用户自定义类型
7、:用户定义数据类型数组指针结构体联合类枚举3.4、C+基本数据类型基本数据类型enum colorred, yellow, blue; /定义定义类型类型color cl=red; /定义定义变量变量7、枚举枚举 :color cl=black; /错误!错误!当一个变量只有几个取值时使用枚举类型,比如:当一个变量只有几个取值时使用枚举类型,比如:枚举变量的值在内存中以整型值存放枚举变量的值在内存中以整型值存放比如:比如:red为为0, yellow为为1, blue为为2在在C+中定义变量时,结构名、联合名或枚举名前的中定义变量时,结构名、联合名或枚举名前的struct、union或或enu
8、m可省略可省略3.5、表达式表达式算数表达式:算数表达式:+ - * / % + -赋值表达式:赋值表达式:=关系表达式关系表达式 := = = !=逻辑表达式:逻辑表达式:! & |条件表达式条件表达式:操作数操作数1 ? 操作数操作数2 :操作数:操作数3逗号表达式逗号表达式:操作操作1,操作数,操作数2, 操作数操作数n表达式的值表达式的值3.6、C+基本语句基本语句 空语句空语句表达式语句表达式语句声明语句:声明语句: (1) 在在C+中声明语句可以中声明语句可以出现出现在任何语句可以出现的地方在任何语句可以出现的地方 (2) 但声明要出现在变量或常量第一次使用之前但声明要出现
9、在变量或常量第一次使用之前条件(条件(if)语句)语句switch语句语句循环语句循环语句:for、while、 do while、break、continue 3.7、函数、函数函数原型(函数返回值)说明,函数原型(函数返回值)说明,必须以分号结束必须以分号结束void do_stuff(float wings,float feet,char eyes); 函数定义函数定义1、简介、简介函数参数函数参数函数调用函数调用3.7、函数、函数2、C的的函数重载:函数重载:当两个或者两个以上的函数共用一个函数名时,称为函数重当两个或者两个以上的函数共用一个函数名时,称为函数重载。被重载的函数称为重载
10、函数载。被重载的函数称为重载函数 举例:举例:/重载的函数类型声明重载的函数类型声明int do_stuff(const int);int do_stuff(float);float do_stuff(const float,float);/重载函数重载函数1-重载整型变量重载整型变量int do_stuff(const int in_value)return in_value*in_value; 3.7、函数、函数/重载函数重载函数2重载浮点型变量重载浮点型变量 int do_stuff(float in_value)return (int)(3.0*in_value);/重载函数重载函数3
11、重载变量个数,重载变量个数,2个浮点型变量个浮点型变量float do_stuff(const float in1,float in2)return (in1+in2)/2.0;编译器会根据实参的类型来自动确定调用哪个重载函数编译器会根据实参的类型来自动确定调用哪个重载函数3.7、函数、函数3、C中的内置函数(内联函数)中的内置函数(内联函数)每当程序中出现对该函数的调用时,每当程序中出现对该函数的调用时,C编译器编译器使用函数体使用函数体中的代码替代函数调用表达式中的代码替代函数调用表达式,这样能加快代码的执行,这样能加快代码的执行,减减少普通函数调用的开销少普通函数调用的开销。在函数说明前
12、冠以关键字在函数说明前冠以关键字“inline”的函数。的函数。C的内置函数具有与的内置函数具有与C中的中的宏定义宏定义#define相同的作用和相同的作用和相似的机理,但是消除了相似的机理,但是消除了#define的不安全因素的不安全因素3.7、函数、函数举例举例#include /定义一个类定义一个类Aclass Aint inttest; public:A(); void show();void increat(int incr_num=2) inttest+=incr_num; ;/类内部定义的函数默类内部定义的函数默/认为内联函数认为内联函数如果没有实参如果没有实参则默认为则默认为2
13、3.7、函数、函数A:A() /构造函数构造函数 inttest=1000;cout“OK?”endl; inline void A:show() /通过通过inline定义的内联函数定义的内联函数cout“nittest=”inttestendl; /主函数主函数void main()A test; /对象声明对象声明 test.show(); /向向A发送消息发送消息test.increat(1234); /调用类内部定义的内联函数调用类内部定义的内联函数test.show();3.8、const修饰符修饰符 例如例如: const int START=3; /定义整型常量定义整型常量ST
14、ART const int STOP=9; /定义整型常量定义整型常量STOP在程序中在程序中START和和STOP的值都不允许改变的值都不允许改变C+引入引入const修饰符(关键字):修饰符(关键字):用于修饰常量,使用用于修饰常量,使用const修饰的对象在运行过程中不允许改变。修饰的对象在运行过程中不允许改变。3.8、const修饰符修饰符使用使用const修饰符修饰符注意事项:注意事项:(1) 常量必须在声明时被初始化。比如:常量必须在声明时被初始化。比如:const int a;/错误,没有初始化错误,没有初始化(2) 注意分清注意分清常常量量指针指针和和指向常量的指针指向常量的指
15、针:比如:比如常常量量指针指针 :指向的数据可以改变,但是所指的位置是不能变的;:指向的数据可以改变,但是所指的位置是不能变的;char *const name ”chen”; char *name1=“Hi!”; name=name1; /不允许!不允许!name1=H; /允许!允许! chen0nameHi0name13.8、const修饰符修饰符指向常量的指针指向常量的指针:所指的对象是一个常量,不允许改变所指的对象是一个常量,不允许改变, 但可以指向其他的对象但可以指向其他的对象const char *name = “chen”;char *name1=“Hi!”; name=nam
16、e1; /允许!允许!name2=H; /不允许!不允许! 指向常量的常指针指向常量的常指针:所指的对象和所指的位置(即指针)都不所指的对象和所指的位置(即指针)都不 能改变能改变const char *const name = “chen”;3.8、const修饰符修饰符(3) 如果如果const定义的是一个整型常量,定义的是一个整型常量,关键字关键字int可以省略可以省略例如:例如:const int LIMIT100; const LIMIT100;这两个语句是一样的这两个语句是一样的(4) const的作用与的作用与#define相似相似,但它消除了,但它消除了#define的的不不安
17、全性安全性,建议在可能的情况下,用,建议在可能的情况下,用const代替代替#define3.8、const修饰符修饰符举例:举例:#include /C+输入输出流头文件输入输出流头文件void print_it(const int data_value) ; /const修饰函数参数修饰函数参数main()const int START=3; /定义整型常量定义整型常量STARTconst int STOP=9; /定义整型常量定义整型常量STOPint index; for(index=START; indexSTOP; index+) print_it(index);return 0;
18、void print_it(const int data_value) data_value=12; /编译出错编译出错 cout“The value of the index is” data_valuen;/3.9、动态内存分配运算符、动态内存分配运算符new和和delete 1、new和和delete的的作用作用进行进行内存的分配和释放内存的分配和释放例如例如:int *point1;char *point2; point1=new int; /初始化指针初始化指针point1point2=new char; /重新初始化指针重新初始化指针point2delete point1; /销毁
19、指针销毁指针point1,释放,释放point1所指所指 /变量的内存空间变量的内存空间delete point2; /释放指针释放指针point2与与C中的中的malloc()和和free()类似,但更好、更简单类似,但更好、更简单注意注意:申请的内存使用完后要及时的释放,否则可能会出问题:申请的内存使用完后要及时的释放,否则可能会出问题3.9、动态内存分配运算符、动态内存分配运算符new和和delete 2、new和和delete的的使用说明使用说明(1) new可以可以自动计算自动计算所要分配内存类型的大小,而不必要使所要分配内存类型的大小,而不必要使用用sizeof()(2) new可
20、以可以自动返回正确的指针类型自动返回正确的指针类型,不需要进行指针类型,不需要进行指针类型转换转换(3) 使用使用new可以将可以将分配的对象初始化分配的对象初始化。例如。例如:int *p new int(99);struct student *p1;p1 = (struct student *) malloc(sizeof (struct student);(4) 使用使用new可以可以为数组动态分配内存空间为数组动态分配内存空间,这时需要在类型,这时需要在类型名后面加上缀上数组的大小。例如名后面加上缀上数组的大小。例如:int *pi=new int10;括号不同括号不同3.9、动态内存
21、分配运算符、动态内存分配运算符new和和delete 关于关于数组数组使用使用new和和delete的的注意注意:对于数组对于数组,在用,在用delete释放释放时要在前面用括号时要在前面用括号即,如果在即,如果在new时使用括号,则时使用括号,则delete时时也要使用括号也要使用括号string *stringptr2 = new string100;delete stringptr2; / 删除数组的分配空间删除数组的分配空间野指针野指针:所指空间被释放后的指针,应置为:所指空间被释放后的指针,应置为NULL3.9、动态内存分配运算符、动态内存分配运算符new和和delete 举例举例:
22、#include /C+输入输出流头文件输入输出流头文件main() /主程序主程序 int index, *point; /声明变量声明变量 point=&index; /初始化指针初始化指针point *point=77; /改变指针改变指针point所指的变量的值所指的变量的值 point=new int; /重新初始化指针重新初始化指针point *point=999; coutThe value are index *point /输出结果输出结果 n; delete point; /销毁指针销毁指针point1 char *c_point; /声明指向字符的指针声明指向字符
23、的指针3.9、动态内存分配运算符、动态内存分配运算符new和和delete c_point=new char37; /初始化指针初始化指针c_point delete c_point; /释放指释放指c_point c_point=new charsizeof(int)+133; /重新初始化指重新初始化指 /针针c_point delete c_point; /释放指针释放指针c_point return 0;定义什么?多大?定义什么?多大?3.10、作用域运算符、作用域运算符:1、作用域运算符、作用域运算符:的的作用作用(1) 使用类的静态成员:使用类的静态成员:classname:mem
24、bername(2) 解除被隐藏全局函数或变量解除被隐藏全局函数或变量#include int num=1;/全局变量全局变量main()int num=2;/局部变量局部变量coutnumendl; /显示局部变量显示局部变量cout:numendl; /显示全局变量显示全局变量3.11、引用、引用(reference)1、引用的、引用的作用定义和语法作用定义和语法定义定义:为目标变量其:为目标变量其别名别名,使之与目标变量,使之与目标变量地址关联地址关联 简化指针的使用简化指针的使用语法语法: type&,其中,其中type是某种数据类型。是某种数据类型。举例举例int i=5;
25、/声明一个整型变量声明一个整型变量int &j=i; /声明一个声明一个引用引用j指向整型变量指向整型变量Ij=4; 不是取地址符不是取地址符i和和j具有具有相同地址空间,相同地址空间,&i与与&j相等相等对引用对引用j的操作和对变量的操作和对变量i的操作的操作一样一样3.11、引用、引用举例:举例:int main() int i=5; /声明一个整型变量声明一个整型变量 int &j=i; /声明一个引用声明一个引用j指向整型变量指向整型变量i int *k=&i; /声明了指向声明了指向i的指针变量的指针变量k/改变变量改变变量i的值的值 i+;
26、/通过变量通过变量i自身加自身加1改变变量的值改变变量的值 j+; /通过引用改变变量的值通过引用改变变量的值 (*k)+; /通过指针改变变量的值通过指针改变变量的值 cout=0; k-) 程序代码段;程序代码段; /在这里,变量在这里,变量K只在只在for循环域中有效。循环域中有效。 3.12、C+针对针对C语言的改进语言的改进一般原则:一般原则:在大函数中,在大函数中,在最靠近使用变量的位置在最靠近使用变量的位置说明变量较为合理说明变量较为合理在较短的函数中,局部变量集中在较短的函数中,局部变量集中在函数的开始处在函数的开始处说明比较好说明比较好在在for循环语句中,一般在循环语句中,
27、一般在for语句中说明循环变量语句中说明循环变量3.12、C+针对针对C语言的改进语言的改进2、无名联合无名联合C+中的一种特殊联合,定义的联合中的一种特殊联合,定义的联合没有类型名没有类型名举例:举例:unionint i;float f;变量变量i和和f具有相同的存储地址具有相同的存储地址可直接引用其数据项,如:可直接引用其数据项,如:i20; /使用变量使用变量i3.12、C+针对针对C语言的改进语言的改进3、强制类型转换强制类型转换C+引入引入新形式的新形式的强制类型转换强制类型转换C语言中:语言中: int i=10;float x=(float)i;C+中:中: int i=10;
28、float x=float(i);/类型名像函数名一样使用类型名像函数名一样使用两种方法在两种方法在C+都能够使用,都能够使用,但推荐使用后面的一种形式但推荐使用后面的一种形式本章小结本章小结不同的不同的头文件头文件不同的不同的注释形式注释形式不同的不同的输入输出语句输入输出语句增加了增加了布尔类型布尔类型 函数重载函数重载、内联函数内联函数增加了增加了const修饰符修饰符不同的动态内存分配运算符不同的动态内存分配运算符new和和delete 作用域运算符作用域运算符:引用引用本章小结本章小结 引用引用是是C+中独有的特性,引用的目的主要用在函数的中独有的特性,引用的目的主要用在函数的参数传
29、递中,解决了大对象传递效率和空间不如意的问题。参数传递中,解决了大对象传递效率和空间不如意的问题。相比指针,它有表达清晰的优点相比指针,它有表达清晰的优点,不允许声明引用数组,返,不允许声明引用数组,返回引用的时候,回引用的时候,要注意局部对象返回的危险要注意局部对象返回的危险。 为了适应为了适应C引入的类的概念引入的类的概念,类对象的建立是分配空间,类对象的建立是分配空间,构造结构和初始化三部分,因此引入了,构造结构和初始化三部分,因此引入了new和和delete进行堆进行堆空间的分配和释放。空间的分配和释放。综合训练综合训练题目题目:编写:编写C+风格的程序,实现求风格的程序,实现求m,n两个正整数的最大两个正整数的最大公约数和最小公倍数公约数和最小公倍数分析分析:只要求出最大公约数即可,因为:只要求出最大公约数即可,因为: 最小公倍数最小公倍数=mn最大公约数最大公约数最大公约数的计算可用欧几里德算法(也称辗转相除法):最大公约数的计算可用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年常州工程职业技术学院高职单招职业适应性测试参考题库有答案解析
- 2026年德阳农业科技职业学院单招综合素质考试模拟试题带答案解析
- 外包开发合同(2025年质量标准)
- 土地承包补充条款合同协议2025年
- 2026年邯郸职业技术学院单招综合素质考试模拟试题带答案解析
- 2026年广东轻工职业技术学院单招综合素质考试模拟试题带答案解析
- 2026年达州职业技术学院高职单招职业适应性测试备考题库有答案解析
- 2026年河南地矿职业学院单招职业技能考试参考题库带答案解析
- 2026年鹤壁能源化工职业学院单招综合素质考试备考题库带答案解析
- 体育馆场地租赁合同协议2025年
- 护理学导论题库第五版及答案解析
- 变电站继保知识培训课件
- 中国联通昆明市2025秋招写作案例分析万能模板直接套用
- 幼儿园小班语言《马路上的车》课件
- 2024河南建筑职业技术学院教师招聘考试真题及答案
- 发电专业的毕业论文
- 2025秋季学期国开电大法律事务专科《刑事诉讼法学》期末纸质考试案例分析题库珍藏版
- 患者身份识别管理标准WST840-2025学习解读课件
- 2025年N1叉车司机考试试题(1000题)(含答案)
- 铁路甲供料管理办法
- 2025国开电大知识产权法形考作业1234答案
评论
0/150
提交评论