下载

1下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C++学习笔记

C++学习笔记.ppt

C++学习笔记

天锡
2012-04-03 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《C++学习笔记ppt》,可适用于IT/计算机领域

此文件仅供学习参考此文件仅供学习参考参考书为《面向对象程序设计及C》人民邮电出版社出版朱立华朱建俞琼编著参考:C面向对象程序设计第一讲C概述课程地位课程地位软件课程体系高级技术CC本次议题本次议题课程简介C概述C与C的关系面向对象程序设计第一个C程序课程简介课程简介教材:《TheCProgrammingLanguage》《CPrimer》《C大学教程》《C高级编程》参考书:课程简介课程简介课程性质:必修课时安排:本课程总学时为学时共学分。课程考核:课程简介课程简介作业安排:题目类型:选择题、填空题、编程题作业数量:理论题:次每周编程题:题每周作业提交:提交到moodle一般限时天经验总结经验总结本次议题本次议题课程简介C概述C与C的关系面向对象程序设计第一个C程序C概述:C之父C概述:C之父比雅尼·斯特劳斯特鲁普博士年出生于丹麦先后毕业于丹麦阿鲁斯大学和英国剑桥大学ATT大规模程序设计研究部门负责人ATT、贝尔实验室和ACM成员。年BS开始开发一种语言当时称为“CwithClass”后来演化为C。年ANSIISOC标准建立同年BS推出了其经典著作TheCProgrammingLanguage的第三版C概述:WhatisCC概述:WhatisCC是一种通用程序设计语言特别是面向系统程序设计它:是一个更好的C支持数据抽象支持面向对象程序设计支持泛型程序设计WhereisCfromWhereisCfromC诞生地贝尔实验室(BellLab)C发展史三个阶段C发展史三个阶段传统类型上的面向对象语言加入泛型程序设计STLBoost加入产生式编程和模板元编程:LokiMPLnow第一阶段第二阶段第三阶段timeC的行业地位C的行业地位http:wwwtiobecomindexphpcontentpaperinfotpciindexhtmlC的行业地位C的行业地位C语言的应用领域C语言的应用领域应用领域嵌入式游戏编程网络编程系统编程C语言的应用领域C语言的应用领域对效率要求高的行业和领域要求跨平台应用底层开发和系统级编程科学计算领域分布式系统本次议题本次议题课程简介C概述C与C的关系面向对象程序设计第一个C程序C与C的关系C与C的关系C是C的子集C与C的关系C与C的关系C是从C的基础上发展而来的:新的数据类型和语法改进:支持面向对象程序设计:支持泛型程序设计C既支持面向对象也支持面向过程不要把面向对象与面向过程对立起来本次议题本次议题课程简介C概述C与C的关系面向对象程序设计类和对象面向对象的三大特征面向过程与面向对象第一个C程序面向对象编程:类与对象面向对象编程:类与对象对象:现实世界中某个具体的物理实体每个对象都包含特定的属性和行为类:现实世界中具有相同属性和行为的物理实体的抽象。学生TomMaryLinda面向对象编程:类与对象的关系面向对象编程:类与对象的关系学生:属性:姓名年龄性别年级行为:学习类是对对象的抽象是创建对象的蓝图描述了所创建的对象共同的属性和行为轿车:属性:颜色品牌重量排量行为:行驶猫:属性:名字颜色品种行为:睡觉捉老鼠面向对象编程:类与对象(cont)类:通常即包含数据成员和成员函数的抽象数据类型如结构体structStudent{intnumchar*name成员变量(属性)charsexvoidstudy()成员函数(行为)}面向对象编程:类与对象(cont)面向对象编程:类与对象的关系(cont)面向对象编程:类与对象的关系(cont)对象(Object)是类的实例定义小强是一个学生属性:小强姓名:小强小强年龄:岁小强性别:男小强年级:学前班行为:小强学习定义Tom是一只猫属性:Tom名字:TomTom颜色:黑色Tom品种:波斯猫行为:Tom睡觉Tom捉老鼠面向对象编程:类与对象(cont)面向对象编程:类与对象(cont)structStudent{intnumchar*name成员变量(属性)charsexvoidstudy()成员函数(行为)}structStudenttest对象对象:按照类类型创建的变量面向对象编程:类与对象(cont)面向对象编程:类与对象(cont)对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类:是一种抽象的数据类型是同种对象的集合与抽象是具有共同行为和属性的若干对象的统一描述体。面向对象编程:类与对象的关系(cont)类对象对象对象对象对象对象实例化面向对象编程:类与对象的关系(cont)本次议题本次议题课程简介C概述C与C的关系面向对象程序设计类和对象面向对象的三大特征面向过程与面向对象第一个C程序面向对象的三大特性:封装面向对象的三大特性:封装C中的封装:现实生活中的封装:傻瓜相机C中的封装:Step:将数据和处理数据的函数封装为类Step:可以将某些成员声明为private从而达到信息隐藏的目的面向对象的三大特性:封装(cont)面向对象的三大特性:封装(cont)封装性就是将属性(数据)和处理这些属性(数据)的行为(方法)结合起来仅对外公开接口以达到信息隐藏的目的。封装的优势:封装是面向对象程序设计语言实现信息隐藏的方法。封装隐藏了具体的实现细节使某些成员设为私有从而提高了安全性和可靠性。面向对象的三大特性:封装(cont)复杂的问题简单化使类的使用者不必了解类的实现细节只需了解对外接口面向对象的三大特性:封装(cont)类的接口:类的对象只能引用该类的公有成员这些公有成员就是类的接口面向对象编程:继承面向对象编程:继承学生大学生现实生活中的继承:C中的继承:在软件开发中若已有类A要创建类B而类A和类B属性和行为基本相同则只需在A的基础上增加些新的内容即可!子类父类面向对象编程:继承(cont)面向对象编程:继承(cont)继承(inheritance)是指子类(subclass)继承父类(superclass)会自动取得父类除私有成员外的全部成员,同一类的所有实体都会自动有该类的全部成员,做到代码重用(reuse)。继承的优势:提高了代码的重用率提高了编程效率面向对象编程:多态面向对象编程:多态面向对象编程:多态(cont)面向对象编程:多态(cont)多态性就是多种表现形式具体来说可以用“一个对外接口多个内在实现方法”表示。在面向对象理论中多态性的定义是:同一操作作用于不同的类的对象将产生不同的执行结果。多态的优势:增强了程序的灵活性本次议题本次议题课程简介C概述C与C的关系面向对象程序设计类和对象面向对象的三大特征面向过程与面向对象第一个C程序面向过程面向过程、概念:以功能为基础采用自顶向下逐步细化的方法面向过程(cont)面向过程(cont)自顶向下逐步细化只需考虑写几个功能具体的实现每个功能一、面向过程intmain(){intnumber={},maxNum,minNummaxNum=minNum=numbergetNum(number)maxMinValue(number,maxNum,minNum)prin(number,maxNum,minNum)system("PAUSE")return}voidgetNum(int*p){int*tempprintf("Pleaseinputnumber:n")for(temp=pp<tempp)scanf("d",p)}voidmaxMinValue(int*p,int*m,int*n){int*temp=pfor(p<tempp){if(*p>=*m)*m=*pif(*p<*n)*n=*p}}voidprin(int*p,int*m,int*n){printf("Result:n")for(inti=i<i)printf("d",pi)printf("n")printf("Themaxisdn",*m)printf("Theminisdn",*n)}例:输入个整数求最大最小值输出面向过程(cont)面向过程(cont)面向过程(cont)面向过程(cont)面向过程的缺陷:代码的重用性和可维护性差数据和对数据的操作分离数据安全不能保证面向对象面向对象、概念:将数据及其操作封装为类以类的对象作为程序的基本元素通过对象发送消息从而调用相应方法完成各种功能面向对象(cont)面向对象(cont)、面向对象程序设计的特点:对象为基本元素数据安全程序的维护量较小、代码的重用率高(继承)程序=对象对象对象本次议题本次议题课程简介C概述C与C的关系面向对象程序设计第一个C程序C的编译器C的编译器第一个C程序第一个C程序#include<iostream>预处理命令usingnamespacestd使用命名空间intmain(){cout<<"Helloworld!"<<endlsystem("pause")return若程序正常结束则向操作系统返回}编辑编译有错?连接执行有错?开始结束TTexecppobj库文件其他obj课堂练习课堂练习请完成输入五个数求出此五个数的平均值并打印。请打印出C中intcharfloatdoublebool这几种类型所占的字节数。通过结构体实现存储并五个学生的姓名性别及成绩并且能够打印五个学生的平均值。本讲小结本讲小结课程简介C概述C与C的关系面向对象程序设计类和对象面向对象的三大特征面向过程与面向对象第一个C程序人们思维的方式是如此的丰富多彩企图推行一种单一理念总是弊大于利。这样C被有意设计成能够支持各种各样的风格而不是强调“一条真理之路”。比雅尼·斯特劳斯特鲁普参考:C程序设计教程p~p第二讲C对C的改进(一)本次议题本次议题C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符本次议题本次议题C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符新的初始化方法新的初始化方法C提供两种初始化方法复制初始化(copyinitialization)如:intx=直接初始化(directinitialization):如:intx()C提供的初始化方法intx=创建一个名为x的数据对象该对象的初值为新的初始化方法(cont)新的初始化方法(cont)注意初始化不是简单地赋值初始化指声明变量或对象并且赋初值赋值指用新值覆盖变量或对象当前值。直接初始化语法更灵活且效率更高初始化内置类型变量两种初始化几乎没有差别对于类类型的初始化有时只能采用直接初始化(以后讨论)两种初始化的方法可以混用(见下页例)#include<iostream>usingnamespacestdintmain(){doublesalary=,wage(salary)cout<<salary<<""<<wage<<endlintinterval,month=,day=,year()cout<<year<<":"<<month<<":"<<day<<":"<<endlsystem("PAUSE")return}新的初始化方法(cont)变量的定义随时定义随时使用混合使用初始化的例子:b本次议题本次议题C与C的基本区别C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符回顾:C语言的输入输出回顾:C语言的输入输出输入设备输入流变量scanf变量printf输出设备输出流输出过程输入过程C语言的输入输出C语言的输入输出输入设备输入流变量scanfcin变量printfcout输出设备输出流输出过程输入过程C语言的输入输出:先睹为快C语言的输入输出:先睹为快#include<iostream>usingnamespacestdintmain(){intxdoubley*以下语句等价于printf("请输入两个整数(用逗号隔开):")*cout<<"请输入两个整数(用空格隔开):"*以下语句等价于scanf("df",x,y)*cin>>x>>y*以下语句等价于printf("x=d,y=fn",x,y)*cout<<"x="<<x<<",y="<<y<<endlsystem("PAUSE")return}C的输入输出:cin,cout的用法C的输入输出:cin,cout的用法基本用法:cout<<表达式<<表达式<<表达式ncin>>变量>>变量>>变量n例如:cout<<"xy="<<xy<<""<<endlcin>>x>>ycin,cout的用法(cont)cin,cout的用法(cont)注意不能用一个<<输出多个数据项cincout可以分成多行来写cin>>a>>b>>ccout<<a<<b<<ccout<<a,b,c<<endl*错误*cout<<a<<b<<c<<endl*正确*cout的用法举例cout的用法举例#include<iostream>usingnamespacestdintmain(){cout<<"ThisisaCprogram!"<<endlcout<<"Thisis"<<"aC"<<"program!"<<endlsystem("PAUSE")return}不分行分多行cin的用法举例cin的用法举例自动类型识别intmain(){charc,cintafloatbcin>>c>>c>>a>>bcout<<"c="<<c<<endl<<"c="<<c<<endl<<"a="<<a<<endl<<"b="<<b<<endlsystem("PAUSE")return}ccab在IO时,系统会自动根据数据类型输入输出相应数据cout与输出控制字符cout与输出控制字符想想为什么要有输出控制字符?想用进制形式输出想控制输出宽度想控制输出对齐方式…回想printf的转换说明C有两种方法控制格式输出:用格式控制符必须包含头文#include<iomanip>用流对象的成员函数(第章讨论)cout与输出控制字符(举例)cout与输出控制字符(举例)#include<iostream>#include<iomanip>usingnamespacestdintmain(){intx=cout<<"请输入一个八进制整数(以开始):"cin>>oct>>xcout<<"x的十六进制表示为:"<<hex<<x<<endlcout<<"x的十进制表示为:"<<dec<<x<<endlcout<<"x的八进制表示为:"<<oct<<x<<endlsystem("PAUSE")return}输出控制字符输出控制符输出控制符输出控制符(cont)输出控制符(cont)输出控制符使用举例输出控制符使用举例[注意]若用控制符程序需包含头文件#include<iomanip>DEMODEMODEMO本次议题本次议题C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符新增注释方式:单行注释新增注释方式:单行注释单行注释可以嵌套或**例:intxx是一个整型变量int是整型类型例:intxx是一个整型变量*int是整型类型***方式的注释不能嵌套****方式下可以嵌套注释例:intx*x是一个整型变量int是整型类型*新增注释方式:多行注释新增注释方式:多行注释b#include<iostream>*cin,cout在该文件中声明,注意”h”没有*usingnamespacestdcin、cout所在的名字空间今后将讲述*功能:测试输出控制字符*intmain(){intxcout<<"请输入一个八进制整数(以开始):"cin>>oct>>xcout<<"x的八进制表示为:"<<oct<<x<<endlsystem("PAUSE")return}本次议题本次议题C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符名字空间简介名字空间简介名字空间陌生吗?*democ*voidfoo(){intxTODO}voidfoo(){intxTODO}命名空间命名空间不同名字空间中允许有相同名称的标识符可见名字空间的作用是为了防止“名字”冲突C允许声明名字空间C允许声明名字空间名字空间声明语法namespace<名字空间名称>{标识符等}注意名字空间的名称要符合标识符命名规则若省略名字空间名称则名字空间只能在本文件内使用名字空间使用举例名字空间使用举例#include<iostream>usingnamespacestd*cin、cout所在的名字空间今后将讲述*namespacens{intx=}namespacens{intx=}intmain(){cout<<"名字空间ns中x的值为:"<<ns::x<<endlcout<<"名字空间ns中x的值为:"<<ns::x<<endlsystem("PAUSE")return}作用域运算符使用名字空间中的“名字”使用名字空间中的“名字”方法:方法:方法:使用名字空间中的“名字”使用名字空间中的“名字”#include<iostream>*cin、cout在该文件中声明注意”h”没有*intmain(){std::cout<<"HelloWorld!"<<std::endlsystem("PAUSE")return}#include<iostream>usingnamespacestdintmain(){cout<<"HelloWorld!"<<endlsystem("PAUSE")return}这种方式有什么缺点?这种方式有什么缺点?使用名字空间中的“名字”(cont)使用名字空间中的“名字”(cont)#include<iostream>*cin、cout在该文件中声明注意”h”没有*usingstd::coutusingstd::endlintmain(){cout<<"HelloWorld!"<<endlsystem("PAUSE")return}推荐!用到什么using什么!使用名字空间中的“名字”(cont)使用名字空间中的“名字”(cont)#include<iostream>usingnamespacestdnamespaceone{constintM=intinf=}namespacetwo{intxintinf=}usingnamespaceoneintmain(){usingtwo::xx=cout<<inf<<endlcout<<M<<endltwo::inf*=cout<<two::inf<<endlcout<<x<<endlsystem("PAUSE")return}本次议题本次议题C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符有关类型的区别有关类型的区别boolstring枚举共同体结构体有关类型的区别:bool类型有关类型的区别:bool类型注意)bool类型的取值只有两种true,false)输出时默认输出或者)用boolalpha可以改变默认的输出方式noboolalpha可以恢复默认的输出方式有关类型的区别(bool)有关类型的区别(bool)#include<iostream>usingnamespacestdintmain(){boolbval=<boolbval=trueboolbval=falseboolbval=boolbval=cout<<"bval="<<bval<<endlcout<<"boolalphabval="<<boolalpha<<bval<<endlcout<<"noboolalphabval="<<noboolalpha<<bval<<endlcout<<"bval="<<bval<<endlcout<<"bval="<<bval<<endlcout<<"bval="<<bval<<endlcout<<"bval="<<bval<<endlsystem("PAUSE")return}均将隐式转换boolalphanoboolalpha改变输出方式有关类型的区别:string类(先睹为快)有关类型的区别:string类(先睹为快)#include<iostream>#include<string>usingnamespacestdintmain(){stringname="student"stringaddress="Hebei"cout<<name<<address<<endlreturn}必须包含相关头文件!有关类型的区别:string类(cont)有关类型的区别:string类(cont)string对象的定义和初始化有关类型的区别:string类(cont)有关类型的区别:string类(cont)#include<iostream>#include<string>usingnamespacestdstringsintmain(){stringsstrings="helloworld!"strings("helloworld!")strings=sstrings(s)strings(,'r')cout<<"s="<<s<<endlcout<<"s="<<s<<endlcout<<"s="<<s<<endlcout<<"s="<<s<<endlcout<<"s="<<s<<endlsystem("PAUSE")return}b初始化string对象有关类型的区别:string类(cont)有关类型的区别:string类(cont)string对象的读写:用cin、cout读写string对象注意cin忽略开头所有空格、TAB、回车符不接收含空格的字符串有关类型的区别:string类(cont)有关类型的区别:string类(cont)#include<iostream>#include<string>usingnamespacestdintmain(){stringscin>>shelloworld!cout<<s<<endlhellosystem("PAUSE")return}bstring的IO#include<iostream>#include<string>usingnamespacestdintmain(){stringwordwhile(cin>>word)cout<<word<<endlsystem("PAUSE")return}bstring读入未知数目的对象有关类型的区别:string类(cont)有关类型的区别:string类(cont)注意getline的第一个参数通常为cin第二个参数为string对象从录入数据的下一行读取可读取任何字符getline()以回车作为结束符(不接受换行符)getline()不忽略前导回车,若第一个就是换行符则置为空串string对象的读写:用getline读取整行文本(含空格)。b#include<iostream>#include<string>usingnamespacestdintmain(){stringlinewhile(getline(cin,line))cout<<line<<endlsystem("PAUSE")return}有关类型的区别:string类(cont)有关类型的区别:string类(cont)string对象的操作设有:strings,sstring变量名成员函数名()操作方法小结:有关类型的区别:string类(cont)有关类型的区别:string类(cont)注意size()的返回类型并非int而是string::sizetype类型的值建议不要把size()的返回值赋值给int变量strings="hello"string::sizetypecount=ssize()有关类型的区别:string类(cont)strings="hello"strings="world"strings=s","strings="hello""world"strings="hello"s"world"两个string对象时操作符左右操作数必须至少有一个是string有关类型的区别:string类(cont)有关类型的区别:string类(cont)有关类型的区别:string类(cont)string对象下标操作时任何无符号整型值均可用作下标但下标的实际类型为string::sizetypestring下标操作可用作左值intmain(){stringstr="student"cout<<str<<endlfor(string::sizetypeix=ix!=strsize()ix)strix='x'cout<<str<<endlsystem("PAUSE")return}bstring赋值操作可作左值有关类型的区别:枚举有关类型的区别:枚举回忆枚举有关类型的区别:枚举(cont)C对枚举的改进有关类型的区别:枚举(cont)在C中定义枚举变量可以不用enumenumweekday{sun,mon,tue,wed,thu,fri,sat}weekdayw省略了enum无名枚举:不给出枚举类型名和变量将枚举元素当符号常量用enum{min=,max=}intx=min,arrmax有关类型的区别:union有关类型的区别:union回忆共用体(联合体)为最长成员的长度,可以赋初值可以做返回值和参数类型相同的可以相互赋值有关类型的区别:union(cont)C对联合的扩展有关类型的区别:union(cont)#include<iostream>usingnamespacestdintmain(){union{charcintidoubled}c='a'cout<<c<<endlreturn}无名联合:没有联合体类型名和变量名的联合体特点:可直接引用数据项有关类型的区别:union(cont)有关类型的区别:union(cont)#include<iostream>usingnamespacestduniontest{charcintidoubled}intmain(){testm={'a'}cout<<mc<<endlreturn}定义联合变量无需给出union有关类型的区别:struct有关类型的区别:structC对结构体的扩展定义结构体变量可以不用structstructpoint{doublexinta}pointp成员可以包含函数定义structpoint{doublex,y数据成员voidsetvalue(doublea,doubleb)成员函数{x=ay=b}}注:其他区别第三章介绍本讲小结本讲小结C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别本讲小结本讲小结Thepurposeofcomputingisinsight,notnumbersRWHamming…butforthestudentnumbersareoftenbestroadtoinsightARalson本次议题本次议题C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符你知道吗?你知道吗?intyint*py=yconstintx=constint*px=xint*constpy=yconstint*constpx=xint**pconstint**p=应如何赋值?constint*const*p=应如何赋值?constint*const*constp=应如何赋值?变量与常量变量与常量constintx=常量(只读变量)变量名存储地址存储内容xxintx=变量变量名存储地址存储内容xx变量与常量注意只读变量必须初始化且一旦定义则不能改变constdoubleKdval=必须初始化!为了与C中的常量区别我们将C中的常量称为字面值常量,”helloworld!”如省略类型默认为int(不推荐定义是省略类型)constKival=默认类型为int,不推荐常量首写字母大K开头且首字母大写其余小写变量与常量变量与常量(cont)#include<iostream>usingnamespacestdintmain(){constdoublex=必须初始化!cout<<x<<endlconsty=默认类型为int,不推荐cout<<y<<endlsystem("PAUSE")return}变量与常量(cont)变量与常量(cont)变量与常量(cont)推荐使用常量(只读变量)尽量不用宏#defineTxx#defineTTTintmain(){intx=cout<<"T="<<T<<endlcout<<"T="<<T<<endlsystem("PAUSE")return}intmain(){intx=constintT=xxconstintT=TTcout<<"T="<<T<<endlcout<<"T=" <<T<<endlsystem("PAUSE")return}变量与常量(cont)FILE#include<iostream>usingnamespacestd声明counter为外部变量externconstintcounterintmain(){cout<<counter<<endlsystem("pause")return}变量与常量(cont)bFILEexternconstintcounter=const只读变量默认为文件局部变量,通过制定const变量为extern就可以在整个程序中访问const对象一重常指针:常指针一重常指针:常指针intx=int*constp=xp=y将是错误的变量名存储地址存储内容xxxpp*p可变p不可变x可变一重常指针(cont)一重常指针(cont)intmain(){intx=int*constp=xp不可变*p可变*p=cout<<"(*p)="<<(*p)<<endlcout<<"x="<<x<<endlinty=p=yerrorsystem("PAUSE")return}一重常指针:指向常量的指针一重常指针:指向常量的指针intx=constint*p=xp=y正确*p=错误变量名存储地址存储内容xxxpp*p不可变p可变x可变一重常指针:指向常量的指针注意:constint*toint*isError一重常指针:指向常量的指针一重常指针(cont)intmain(){intx=constint*p=p可变*p不可变p=xcout<<"x="<<*p<<endlcout<<"x="<<x<<endlcout<<(*p)<<endlinty()p=ycout<<"*p="<<*p<<endlsystem("PAUSE")return}一重常指针(cont)一重常指针:指向常量的常指针constintx=constint*constp=xp=y*p=都是错误的变量名存储地址存储内容xxxpp*p不可变p不可变,x不可变一重常指针:指向常量的常指针一重常指针(cont)bintmain(){intx=constint*constp=x*p=cout<<"*p="<<*p<<endlinty=p=ysystem("PAUSE")return}一重常指针(cont)二重常指针二重常指针pp变量名变量地址存储单元中的内容pxppxxintx=int*p=xint*const*p=p*p=y错误p=y正确p**p可变*p不可变二重常指针(cont)二重常指针(cont)pp变量名变量地址存储单元中的内容pxppxxintx=int*p=xint**constp=p**p=x=正确p不可变**p可变*p可变二重常指针(cont)二重常指针(cont)pp变量名变量地址存储单元中的内容pxppxxintx=int*p=xint*const*constp=pp=p*p=y错误x=正确p*p不可变,**p可变二重常指针(cont)二重常指针(cont)pp变量名变量地址存储单元中的内容pxppxxintx=int*p=xconstint*const*constp=pp=p*p=y**p=错误x=正确p、**p、*p均不可变本讲小结C与C的基本区别新的初始化方法新的IO新的注释名字空间有关类型的区别独具魅力的const修饰符本讲小结本讲小结本讲小结Thefirstthingwedo,let’skillallthelanguagelawyerHenryVI,partII参考:C程序设计教程p~p第三讲C对C的改进(二)本次议题本次议题函数的区别原型声明的区别局部变量定义的位置域解析::扩大全局变量的见范围带默认参数的函数内联函数函数重载本次议题本次议题函数的区别原型声明的区别局部变量定义的位置域解析::扩大全局变量的见范围带默认参数的函数内联函数函数重载函数的区别:原型声明的区别函数的区别:原型声明的区别区别一:原型声明的区别原型声明的概念:函数要先定义再使用如果先使用后定义则必须使用原型声明原型声明的格式:函数的区别:原型声明的区别(cont)#include<iostream>usingnamespacestdintmain(){floatadd(floatx,floaty)原型声明floata,b,ccout<<"Pleaseentera,b:"cin>>a>>bc=add(a,b)cout<<"sum=“<<c<<endlreturn}floatadd(floatx,floaty){floatzz=xyreturnz}函数的区别:原型声明的区别(cont)函数的区别:原型声明的区别(cont)注意声明语句必须加分号!位置任意只是作用域不同声明的原因就是告诉编译环境函数参数的个数,类型和顺序C和C中任何类型的函数先使用后定义都需原型声明!函数的区别:原型声明的区别(cont)函数的区别:原型声明的区别(cont)区别:原型为空的含义不同voidfun()voidfun(void)C:认为两种形式都无参C:认为第一个可能有多个参数第二个无参函数的区别:原型声明的区别(cont)本次议题本次议题函数的区别原型声明的区别局部变量定义的位置域解析::扩大全局变量的见范围带默认参数的函数内联函数函数重载本次议题本次议题函数的区别原型声明的区别局部变量定义的位置域解析::扩大全局变量的见范围带默认参数的函数内联函数函数重载函数的区别:局部变量定义位置函数的区别:局部变量定义位置区别二:局部变量定义的位置#include<iostream>usingnamespacestdintmain(){intival=cout<<ival<<endlintival=cout<<ival<<endlsystem("PAUSE")return}#include<iostream>usingnamespacestdintmain(){intival=intival=cout<<ival<<endl

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/1041

VIP

意见
反馈

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利