null此文件仅供学习参考此文件仅供学习参考参考书为《面向对象程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
及C++》
人民邮电出版社 出版
朱立华 朱建 俞琼 编著null参考:C++面向对象程序设计第一讲 C++概述课程地位课程地位软件课程体系高级技术C++C本次议
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
本次议题
课程简介
C++概述
C与C++的关系
面向对象程序设计
第一个C++程序课程简介课程简介教材:《 The C++ Programming Language 》
《 C++ Primer 》
《 C++大学教程 》
《 C++高级编程 》
参考书:课程简介课程简介课程性质:必修
课时安排:
本课程总学时为72学时,共3学分。
课程考核:
课程简介课程简介作业安排:
题目类型:
选择题、填空题、编程题
作业数量:
理论题:2次/每周
编程题:3-4题/每周
作业提交:
提交到moodle,一般限时7-10天
经验总结经验总结本次议题本次议题
课程简介
C++概述
C与C++的关系
面向对象程序设计
第一个C++程序C++概述:C++之父C++概述:C++之父比雅尼·斯特劳斯特鲁普博士,1950年出生于丹麦,先后毕业于丹麦阿鲁斯大学和英国剑桥大学,AT&T大规模程序设计研究部门负责人,AT&T、贝尔
实验室
17025实验室iso17025实验室认可实验室检查项目微生物实验室标识重点实验室计划
和ACM成员。1979年,B. S开始开发一种语言,当时称为“C with Class”,后来演化为C++。1998年,ANSI/ISO C++
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
建立,同年,B. S推出了其经典著作The C++ Programming Language的第三版C++概述:What is C++?C++概述:What is C++?C++是一种通用程序设计语言,特别是面向系统程序设计,它:
是一个更好的C
支持数据抽象
支持面向对象程序设计
支持泛型程序设计
Where is C++ from?Where is C++ from?C++诞生地----贝尔实验室(Bell Lab)C++发展史---三个阶段C++发展史---三个阶段传统类型上的面向对象语言加入泛型程序设计
STL
Boost 加入产生式编程和模板元编程:
Loki
MPL
198019952000now第一阶段第二阶段第三阶段timeC++的行业地位C++的行业地位http://www.tiobe.com/index.php/content/paperinfo/tpci/index.htmlC++的行业地位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.)类:通常即包含数据成员和成员函数的抽象 数据类型,如结构体struct Student
{
int num;
char *name; //成员变量(属性)
char sex;
void study(); //成员函数(行为)
};面向对象编程:类与对象(cont.)面向对象编程:类与对象的关系(cont.)面向对象编程:类与对象的关系(cont.)对象(Object)是类的实例定义小强是一个学生
属性:
小强.姓名:小强
小强.年龄:06岁
小强.性别:男
小强.年级:学前班
行为:
小强.学习定义Tom是一只猫
属性:
Tom.名字:Tom
Tom.颜色:黑色
Tom.品种:波斯猫
行为:
Tom.睡觉
Tom.捉老鼠面向对象编程:类与对象(cont.)面向对象编程:类与对象(cont.)struct Student
{
int num;
char *name; //成员变量(属性)
char sex;
void study(); //成员函数(行为)
};
struct Student test;//对象
.....对象:按照类类型创建的变量面向对象编程:类与对象(cont.)面向对象编程:类与对象(cont.)对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体。面向对象编程:类与对象的关系(cont.)类对象对象对象对象对象对象实例化面向对象编程:类与对象的关系(cont.)本次议题本次议题课程简介
C++概述
C与C++的关系
面向对象程序设计
类和对象
面向对象的三大特征
面向过程与面向对象
第一个C++程序面向对象的三大特性:封装面向对象的三大特性:封装C中的封装:
现实生活中的封装:
傻瓜相机
C++中的封装:
Step1:将数据和处理数据的函数封装为类
Step2:可以将某些成员声明为private从而达到信息隐藏的目的
面向对象的三大特性:封装(cont.)面向对象的三大特性:封装(cont.)封装性 就是将属性(数据)和处理这些属性(数据)的行为(方法)结合起来,仅对外公开接口以达到信息隐藏的目的。
封装的优势:
封装是面向对象程序设计语言实现信息隐藏的方法。
封装隐藏了具体的实现细节,使某些成员设为私有从而提高了安全性和可靠性。
面向对象的三大特性:封装(cont.)复杂的问题简单化,使类的使用者不必了解类的实现细节,只需了解对外接口面向对象的三大特性:封装(cont.)类的接口:
类的对象只能引用该类的公有成员这些公有成员就是类的接口面向对象编程:继承面向对象编程:继承学生大学生现实生活中的继承:
C++中的继承:
在软件开发中,若已有类A要创建类 B而类A和类B属性和行为基本相同,则只需在A的基础上增加些新的内容即可!
子类父类面向对象编程:继承(cont.)面向对象编程:继承(cont.)继承(inheritance)是指子类(subclass)继承父类(superclass),会自动取得父类除私有成员外的全部成员,同一类的所有实体都会自动有该类的全部成员,做到代码重用(reuse)。
继承的优势:
提高了代码的重用率,提高了编程效率
面向对象编程:多态面向对象编程:多态面向对象编程:多态(cont.)面向对象编程:多态(cont.)多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。
在面向对象理论中,多态性的定义是:同一操作作用于不同的类的对象,将产生不同的执行结果 。
多态的优势:
增强了程序的灵活性本次议题本次议题课程简介
C++概述
C与C++的关系
面向对象程序设计
类和对象
面向对象的三大特征
面向过程与面向对象
第一个C++程序面向过程面向过程1、概念:以功能为基础,采用自顶向下,逐步细化的方法面向过程(cont.)面向过程(cont.)自顶向下
,逐步细化只需考虑写几个功能
具体的实现每个功能一、面向过程null
int main()
{
int number[5] = {0},maxNum,minNum;
maxNum = minNum = number[0];
getNum(number);
maxMinValue(number,&maxNum,&minNum);
prin(number, &maxNum, &minNum);
system("PAUSE");
return 0;
}void getNum(int *p)
{
int *temp;
printf("Please input 5 number:\n");
for(temp=p+4; p
=*m ) *m = *p;
if( *p<*n ) *n = *p;
}
}void prin(int *p ,int *m,int *n)
{
printf("Result:\n");
for(int i=0; i<5; i++) printf(" %d ",p[i]);
printf("\n");
printf("The max is %d\n",*m);
printf("The min is %d\n",*n);
}例:输入5个整数,求最大最小值,输出面向过程(cont.)面向过程(cont.)面向过程(cont.)面向过程(cont.)面向过程的缺陷:
代码的重用性和可维护性差
数据和对数据的操作分离,数据安全不能保证
面向对象面向对象1、概念:将数据及其操作封装为类,以类的对象作为程序的基本元素,通过对象发送消息,从而调用相应方法完成各种功能
面向对象(cont.)面向对象(cont.)2、面向对象程序设计的特点:
对象为基本元素
数据——安全
程序的维护量较小、代码的重用率高(继承)
程序 = 对象 + 对象 + 对象+... ...本次议题本次议题
课程简介
C++概述
C与C++的关系
面向对象程序设计
第一个C++程序C++的编译器C++的编译器第一个C++程序第一个C++程序#include //预处理命令
using namespace std; //使用命名空间
int main()
{
cout << "Hello world!" << endl;
system("pause");
return 0; //若程序正常结束,则向操作系统返回0
}1_4null 编 辑 编 译 有错? 连 接 执 行有错? 开始 结束TT.exe.cpp.obj库文件 其他.obj课堂练习课堂练习请完成输入五个数,求出此五个数的平均值并打印。
请打印出C++中int,char,float,double,bool这几种类型所占的字节数。
通过结构体实现存储并五个学生的姓名,性别及成绩,并且能够打印五个学生的平均值。本讲小结本讲小结课程简介
C++概述
C与C++的关系
面向对象程序设计
类和对象
面向对象的三大特征
面向过程与面向对象
第一个C++程序null 人们思维的方式是如此的丰富多彩,企图推行一种单一理念总是弊大于利。这样,C++被有意设计成能够支持各种各样的风格,而不是强调“一条真理之路”。
—比雅尼·斯特劳斯特鲁普null参考:C++程序设计教程 p24~p34第二讲 C++对C的改进(一)本次议题本次议题C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别
独具魅力的const修饰符 本次议题本次议题C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别
独具魅力的const修饰符 新的初始化方法新的初始化方法 C++提供两种初始化方法复制初始化(copy-initialization)
如:int x = 1024;直接初始化(direct-initialization):
如:int x(1024); C提供的初始化方法int x = 1024;创建一个名为x的数据对象,该对象的初值为1024新的初始化方法(cont.)新的初始化方法(cont.)[注意]初始化不是简单地赋值,初始化指声明变量或对象并且赋初值;赋值指用新值覆盖变量或对象当前值。
直接初始化语法更灵活且效率更高
初始化内置类型变量两种初始化几乎没有差别对于类类型的初始化,有时只能采用直接初始化(以后讨论)
两种初始化的方法可以混用(见下页例) null#include
using namespace std;
int main()
{
double salary = 9999.99, wage(salary + 0.01);
cout<
using namespace std;
int main()
{
int x;
double y;
/*以下语句等价于printf("请输入两个整数(用逗号隔开):");*/
cout << "请输入两个整数(用空格隔开):";
/*以下语句等价于scanf("%d %f", &x, &y);*/
cin >> x >> y;
/*以下语句等价于printf("x = %d, y = %f\n", x, y);*/
cout << "x = " << x << ", y = " << y << endl;
system("PAUSE");
return 0;
}C++的输入输出:cin,cout的用法C++的输入输出:cin,cout的用法基本用法:
cout<<表达式1<<表达式2<<表达式n;
cin>>变量1>>变量2>>变量n;
例如:
cout<<"x + y ="<< x + y << "." << endl;
cin >> x >> y;
cin,cout的用法(cont.)cin,cout的用法(cont.)[注意]
不能用一个<<输出多个数据项
cin/cout可以分成多行来写
cin>>a>>b
>>c;
cout<
using namespace std;
int main()
{
cout << "This is a C++ program! " << endl;
cout << "This is"
<< " a C++"
<< "program!"
<< endl;
system("PAUSE");
return 0;
}不分行分多行cin的用法举例cin的用法举例自动类型识别
int main()
{
char c1, c2;
int a;
float b;
cin >> c1 >> c2 >> a >> b;
cout << "c1 = " << c1 << endl
<< "c2 = " << c2 << endl
<< "a = " <
用流对象的成员函数(第7章讨论)
cout与输出控制字符(举例)cout与输出控制字符(举例)#include
#include
using namespace std;
int main()
{
int x = 0;
cout << "请输入一个八进制整数(以开始):"; cin >> oct >> x;
cout << "x的十六进制表示为:" << hex << x << endl;
cout << "x的十进制表示为:" << dec << x << endl;
cout << "x的八进制表示为:" << oct << x << endl;
system("PAUSE");
return 0;
}输出控制字符输出控制符输出控制符输出控制符(cont.)输出控制符(cont.)输出控制符使用举例输出控制符使用举例[注意]
若用控制符,程序需包含头文件#includeDEMO 2_3
DEMO 2_4
DEMO 2_5本次议题本次议题C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别
独具魅力的const修饰符
新增注释方式:单行注释新增注释方式:单行注释单行注释// 可以嵌套 // 或 /*... ...*/
例:int x;//x是一个整型变量//int是整型类型
例:int x;//x是一个整型变量/*int是整型类型*/
/*... ...*/方式的注释不能嵌套/*... ...*/
/*... ...*/方式下可以嵌套//注释
例:int x;/* x是一个整型变量//int是整型类型*/
新增注释方式:多行注释新增注释方式:多行注释b13
#include /*cin,cout在该文件中声明,注意”.h”没有*/
using namespace std;//cin、cout所在的名字空间,今后将讲述
/*
功能:测试输出控制字符
*/
int main()
{
int x;
cout << "请输入一个八进制整数(以开始):";
cin >> oct >> x;
cout << "x的八进制表示为:" << oct << x << endl;
system("PAUSE");
return 0;
}本次议题本次议题C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别
独具魅力的const修饰符 名字空间简介名字空间简介名字空间陌生吗?
/*demo2_5.c*/
void foo1()
{
int x;
//TODO
}
void foo2()
{
int x;
//TODO
}命名空间1命名空间2不同名字空间中允许有
相同名称的标识符可见,名字空间的作用是为了防止“名字”冲突C++允许声明名字空间C++允许声明名字空间 名字空间声明语法namespace <名字空间名称>
{
//标识符等
}[注意]
名字空间的名称要符合标识符命名规则
若省略名字空间名称则名字空间只能在本文件内使用名字空间使用举例名字空间使用举例#include
using namespace std;/*cin、cout所在的名字空间,今后将讲述*/
namespace ns1
{
int x = 1;
}
namespace ns2
{
int x = 2;
}
int main()
{
cout << "名字空间ns1中x的值为: " << ns1::x << endl;
cout << "名字空间ns2中x的值为: " << ns2::x << endl;
system("PAUSE");
return 0;
}
作用域运算符使用名字空间中的“名字”使用名字空间中的“名字”方法3:方法1:方法2:使用名字空间中的“名字”使用名字空间中的“名字”#include /*cin、cout在该文件中声明,注意”.h”没有*/
int main()
{
std::cout << "Hello World!" << std::endl;
system("PAUSE");
return 0;
}
#include
using namespace std;
int main()
{
cout << "Hello World!" << endl;
system("PAUSE");
return 0;
}这种方式有什么缺点?这种方式有什么缺点?使用名字空间中的“名字”(cont.)使用名字空间中的“名字”(cont.)#include /*cin、cout在该文件中声明,注意”.h”没有*/
using std::cout;
using std::endl;
int main()
{
cout << "Hello World!" << endl;
system("PAUSE");
return 0;
}推荐!用到什么using什么!使用名字空间中的“名字”(cont.)使用名字空间中的“名字”(cont.)2_6
#include
using namespace std;
namespace one
{
const int M = 200;
int inf = 10;
}
namespace two
{
int x;
int inf = -100;
}using namespace one;
int main()
{
using two::x;
x = -100;
cout << inf << endl; //10
cout << M << endl; //200
two::inf *= 2;
cout << two::inf << endl; //-200
cout << x<< endl; //-100
system("PAUSE");
return 0;
}本次议题本次议题C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别
独具魅力的const修饰符 有关类型的区别有关类型的区别bool
string
枚举
共同体
结构体有关类型的区别:bool类型有关类型的区别:bool类型[注意]
1)bool类型的取值只有两种true,false
2)输出时默认输出0或者1 3)用boolalpha可以改变默认的输出方式, noboolalpha可以恢复默认的输出方式有关类型的区别(bool)有关类型的区别(bool)#include
using namespace std;
int main()
{
bool bval1 = 1 < 2;
bool bval2 = true;
bool bval3 = false;
bool bval4 = 4;
bool bval5 = 0;
cout << "bval1=" << bval1 << endl;
cout << "boolalpha bval1=" << boolalpha << bval1 << endl;
cout << "noboolalpha bval1=" << noboolalpha << bval1 << endl;
cout << "bval2=" << bval2 << endl;
cout << "bval3=" << bval3 << endl;
cout << "bval4=" << bval4 << endl;
cout << "bval5=" << bval5 << endl;
system("PAUSE");
return 0;
}2_12均将隐式转换boolalpha
noboolalpha
改变输出方式有关类型的区别:string类(先睹为快)有关类型的区别:string类(先睹为快)#include
#include
using namespace std;
int main()
{
string name = "student";
string address = "Hebei... ...";
cout << name << address <
#include
using namespace std;
string s0;
int main( )
{
string s1;
//string s2 = "hello world!";
string s2("hello world!");
//string s3 = s2;
string s3(s2);
string s4(5, 'r');
cout << "s0=" <
#include
using namespace std;
int main()
{
string s;
cin >> s; //hello world!
cout << s <
#include
using namespace std;
int main()
{
string word;
while(cin >> word)
cout << word << endl;
system("PAUSE");
return 0;
}b9string读入未知数目的对象
有关类型的区别:string类(cont.)有关类型的区别:string类(cont.)[注意]
getline的第一个参数通常为cin 第二个参数为string对象
从录入数据的下一行读取,可读取
任何字符
getline()以回车作为结束符
(不接受换行符)
getline()不忽略前导回车,若第一
个就是换行符,则置为空串 string对象的读写:用getline读取整行文本(含空格)。
b10
#include
#include
using namespace std;
int main()
{
string line;
while(getline(cin, line))
cout << line << endl;
system("PAUSE");
return 0;
}
有关类型的区别:string类(cont.)有关类型的区别:string类(cont.)string对象的操作,设有:string s, s1; string变量名.成员函数名()操作方法小结:有关类型的区别:string类(cont.)有关类型的区别:string类(cont.)[注意]size()的返回类型并非int而是string::size_type类型的值 建议不要把size()的返回值赋值给int变量 string s2 = "hello";
string::size_type count = s2.size();有关类型的区别:string类(cont.)string s1 = "hello" string s2 = "world";
string s3 = s1 + ",";
string s4 = "hello" + "world ";
string s5 = "hello" + s2 + "world" ;两个string对象+时,+操作符左右操作数必须至少有一个是string有关类型的区别:string类(cont.)有关类型的区别:string类(cont.)有关类型的区别:string类(cont.)string对象下标操作时,任何无符号整型值均可用作下标,但下标的实际类型为string::size_type
string下标操作可用作左值int main()
{
string str = "student";
cout << str << endl;
for(string::size_type ix = 0; ix!=str.size(); ++ix)
str[ix] = 'x';
cout << str << endl;
system(" PAUSE ");
return 0;
}b11string赋值操作可作左值
有关类型的区别:枚举有关类型的区别:枚举回忆枚举有关类型的区别:枚举(cont.)C++对枚举的改进有关类型的区别:枚举(cont.)在C++中定义枚举变量可以不用enumenum weekday
{sun, mon, tue, wed, thu, fri, sat};
weekday w; //省略了enum无名枚举:不给出枚举类型名和变量,将枚举元素当 符号常量用enum
{min = 0, max = 100};
int x = min, arr[max]; ... ...有关类型的区别:union有关类型的区别:union回忆共用体(联合体)为最长成员的长度,可以赋初值,可以做返回值和参数,类型相同的可以相互赋值有关类型的区别:union(cont.)C++对联合的扩展有关类型的区别:union(cont.)#include
using namespace std;
int main()
{
union {
char c;
int i;
double d;
};
c = 'a';
cout << c << endl;
return 0;
}2_14无名联合:没有联合体类型名和变量名的联合体特点:可直接引用数据项
有关类型的区别:union(cont.)有关类型的区别:union(cont.)#include
using namespace std;
union test
{
char c;
int i;
double d;
};
int main()
{
test m = {'a'};
cout << m.c << endl;
return 0;
}定义联合变量无需给出union2_15有关类型的区别:struct有关类型的区别:structC++对结构体的扩展定义结构体变量可以不用structstruct point
{
double x;
int a;
};
point p;成员可以包含函数定义struct point{
double x,y; //数据成员
void setvalue(double a,double b) //成员函数
{
x = a;
y = b;
}
};注:其他区别第三章介绍本讲小结本讲小结C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别本讲小结本讲小结 The purpose of computing is insight,not numbers.
——R.W.Hamming
…but for the student numbers are often best road to insight.
——A.Ralson本次议题本次议题C与C++的基本区别
新的初始化方法
新的I/O
新的注释
名字空间
有关类型的区别
独具魅力的const修饰符 你知道吗?你知道吗?int y;
int *py = &y;
const int x = 3;
const int *px = &x;
int *const py2 = &y;
const int *const px2 = &x;
int **p1;
const int **p2 = ??; //应如何赋值?
const int *const* p3 = ??; //应如何赋值?
const int *const *const p4 =??; //应如何赋值?变量与常量变量与常量const int x = 3; //常量(只读变量)3变量名存储地址存储内容&xxint x = 3; //变量3变量名存储地址存储内容&xx变量与常量[注意]
只读变量必须初始化,且一旦定义则不能改变 const double Kdval = 5.2; //必须初始化!
为了与C中的常量区别,我们将C中的常量称为字面值常量 3,3.4,”hello world!”
如省略类型默认为int(不推荐定义是省略类型) const Kival = 4; //默认类型为int, 不推荐
常量首写字母大K开头且首字母大写,其余小写
变量与常量变量与常量(cont.)2—7
#include
using namespace std;
int main()
{
const double x = 5.2; //必须初始化!
cout << x << endl;
const y = 4; //默认类型为int, 不推荐
cout << y << endl;
system("PAUSE");
return 0;
}变量与常量(cont.)变量与常量(cont.)
变量与常量(cont.)推荐使用常量(只读变量),尽量不用宏2_8
#define T1 x+x
#define T2 T1-T1
int main()
{
int x = 5;
cout << "T1=" << T1
<< endl;
cout << "T2=" << T2
<< endl;
system("PAUSE");
return 0;
}2_9
int main()
{
int x = 5;
const int T1 = x+x;
const int T2 = T1-T1;
cout <<"T1= " << T1
<< endl;
cout << "T2=" << T2
<< endl;
system("PAUSE");
return 0;
}变量与常量(cont.)//FILE2
#include
using namespace std;
//声明counter为外部变量
extern const int counter;
int main()
{
cout << counter << endl;
system("pause");
return 0;
}变量与常量(cont.)b_2//FILE1
extern const int counter = 100;const只读变量默认为文件局部变量,通过制定const变量为extern,就可以在整个程序中访问const对象一重常指针:常指针一重常指针:常指针int x = 3; int *const p = &x;//p=&y;将是错误的3变量名存储地址存储内容&xx&x&pp*p可变,p不可变,x可变一重常指针(cont.)一重常指针(cont.)2_11
int main()
{
int x = 5;
int *const p = &x; //p不可变,*p可变
*p = 60;
cout << "++(*p)=" <<++(*p) << endl; //61
cout << "x=" << x << endl;
int y = 6;
//p = &y;//error
system("PAUSE");
return 0;
}一重常指针:指向常量的指针一重常指针:指向常量的指针int x = 3; const int * p = &x;
//p = &y; 正确 //*p = 4; 错误3变量名存储地址存储内容&xx&x&pp*p不可变,p可变,x可变一重常指针:指向常量的指针注意:
const int * to int * is Error
一重常指针:指向常量的指针一重常指针(cont.)2_10
int main()
{
int x = 5;
const int *p = NULL; //p可变,*p不可变
p = &x;
cout << "x=" << *p << endl;//5
cout << "++x=" << ++x << endl;
//cout << (*p)++ << endl;
int y(6);
p = &y;
cout << "*p=" << *p << endl;//6
system("PAUSE");
return 0;
}一重常指针(cont.)一重常指针:指向常量的常指针const int x = 3; const int *const p = &x;
//p = &y; *p = 4;都是错误的3变量名存储地址存储内容&xx&x&pp*p不可变,p不可变,x不可变一重常指针:指向常量的常指针一重常指针(cont.)b1
int main()
{
int x = 5;
const int *const p = &x;
//*p = 60;
cout<<"*p="<<*p<
using namespace std;
int main()
{
float add(float x,float y);//原型声明
float a,b,c;
cout << "Please enter a,b:";
cin >> a >> b;
c = add(a, b);
cout << "sum=“ << c << endl;
return 0;
}
float add(float x,float y)
{
float z;
z = x+y;
return z;
}3_1函数的区别:原型声明的区别(cont.)函数的区别:原型声明的区别(cont.)[注意]
声明语句必须加分号!
位置任意,只是作用域不同
声明的原因就是告诉编译环境函数参数的个数,类型和顺序
C和C++中,任何类型的函数先使用后定义都需原型声明!
函数的区别:原型声明的区别(cont.)函数的区别:原型声明的区别(cont.)区别:原型为空的含义不同
void fun(); void fun(void);C++:认为两种形式都无参
C:认为第一个可能有多个参数第二个无参函数的区别:原型声明的区别(cont.)本次议题本次议题函数的区别
原型声明的区别
局部变量定义的位置
域解析::扩大全局变量的见范围
带默认参数的函数
内联函数
函数重载本次议题本次议题函数的区别
原型声明的区别
局部变量定义的位置
域解析::扩大全局变量的见范围
带默认参数的函数
内联函数
函数重载函数的区别:局部变量定义位置函数的区别:局部变量定义位置区别二:局部变量定义的位置#include
using namespace std;
int main()
{
int ival = 3;
cout << ival << endl;
int ival1 = 4;
cout << ival1 << endl;
system("PAUSE");
return 0;
}#include
using namespace std;
int main()
{
int ival = 3;
int ival1 = 4;
cout << iv