为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

县疾病预防控制中心突发重大传染病疫情应急处置预案

2017-10-06 13页 doc 30KB 334阅读

用户头像

is_435706

暂无简介

举报
县疾病预防控制中心突发重大传染病疫情应急处置预案 第六章 数组 指针与字符串 本章主要内容 数组 指针 动态存储分配 指针与数组 指针与函数 字符串 数组的概念 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。 数组属于构造类型。 数 组 一维数组的声明与引用 一维数组的声明 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10]; 表示 a 为整型数组,有10个元素:a[0]...a[9] 引用 必须...
县疾病预防控制中心突发重大传染病疫情应急处置预案
第六章 数组 指针与字符串 本章主要内容 数组 指针 动态存储分配 指针与数组 指针与函数 字符串 数组的概念 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。 数组属于构造类型。 数 组 一维数组的声明与引用 一维数组的声明 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10]; 表示 a 为整型数组,有10个元素:a[0]...a[9] 引用 必须先声明,后使用。 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7]-a[2*3] 数 组 对象数组 声明: 类名 数组名[元素个数]; 访问方法: 通过下标访问 数组名[下标].成员名 数 组 对象数组初始化 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。 通过初始化列表赋值。 例: Point A[2]={Point(1,2),Point(3,4)}; 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)。 数 组 数组元素所属类的构造函数 不声明构造函数,则采用默认构造函数。 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。 当数组中每一个对象被删除时, 系统都要调用一次析构函数。 例6-3 对象数组应用举例 //Point.h #if !defined(_POINT_H) #define _POINT_H class Point { public: Point(); Point(int xx,int yy); ~Point(); void Move(int x,int y); int GetX() {return X;} int GetY() {return Y;} private: int X,Y; }; #endif //6-2.cpp #include using namespace std; #include "Point.h" Point::Point() { X=Y=0; cout<<"Default Constructor called."< #include "Point.h" using namespace std; int main() { cout<<"Entering main..."<成员名 ptr->getx() 相当于 (*ptr).getx(); 指 针 对象指针应用举例 int main() { Point A(5,10); Point *ptr; ptr=&A; int x; x=ptr->GetX(); cout<X=xx; this->Y=yy; 指 针 指向类的非静态成员的指针 通过指向成员的指针只能访问公有成员 声明指向成员的指针 声明指向公有数据成员的指针 类型说明符 类名::*指针名; 声明指向公有函数成员的指针 类型说明符 (类名::*指针名)(参数表); 指 针 指向类的非静态成员的指针 指向数据成员的指针 说明指针应该指向哪个成员 指针名=&类名::数据成员名; 通过对象名(或对象指针)与成员指针结合来访问数据成员 对象名.* 类成员指针名 或: 对象指针名—>*类成员指针名 指 针 指向类的非静态成员的指针 指向函数成员的指针 初始化 指针名=类名::函数成员名; 通过对象名(或对象指针)与成员指针结合来访问函数成员 (对象名.* 类成员指针名)(参数表) 或: (对象指针名—>*类成员指针名)(参数表) 指 针 指向类的非静态成员的指针 例6-13 访问对象的公有成员函数的不同方式 int main() //主函数 { Point A(4,5); //声明对象A Point *p1=&A; //声明对象指针并初始化 //声明成员函数指针并初始化 int (Point::*p_GetX)()=Point::GetX; //(1)使用成员函数指针访问成员函数 cout<<(A.*p_GetX)()<GetX)()< using namespace std; class Point //Point类声明 {public: //外部接口 Point(int xx=0, int yy=0) {X=xx;Y=yy;countP++;}//构造函数 Point(Point &p); //拷贝构造函数 int GetX() {return X;} int GetY() {return Y;} static int countP; //静态数据成员引用性说明 private: //私有数据成员 int X,Y; }; Point::Point(Point &p) { X=p.X; Y=p.Y; countP++; } int Point::countP=0; //静态数据成员定义性说明 指 针 int main() //主函数 { //声明一个int型指针,指向类的静态成员 int *count=&Point::countP; Point A(4,5); //声明对象A cout<<"Point A,"< using namespace std; class Point { public: Point() { X=Y=0; cout<<"Default Constructor called.\n";} Point(int xx,int yy) { X=xx; Y=yy; cout<< "Constructor called.\n"; } ~Point() { cout<<"Destructor called.\n"; } int GetX() {return X;} int GetY() {return Y;} void Move(int x,int y) { X=x; Y=y; } private: int X,Y; }; 动态存储分配 int main() { cout<<"Step One:"< using namespace std; class Point { //类的声明同例6-16,略 }; int main() { Point *Ptr=new Point[2]; //创建对象数组 Ptr[0].Move(5,10); //通过指针访问数组元素的成员 Ptr[1].Move(15,20); //通过指针访问数组元素的成员 cout<<"Deleting..."< using namespace std; class Point { //类的声明同例6-16 … }; class ArrayOfPoints { public: ArrayOfPoints(int n) { numberOfPoints=n; points=new Point[n]; } ~ArrayOfPoints() { cout<<"Deleting..."<>number; //创建对象数组 ArrayOfPoints points(number); //通过指针访问数组元素的成员 points.Element(0).Move(5,10); //通过指针访问数组元素的成员 points.Element(1).Move(15,20); } * 运行结果如下: Please enter the number of points:2 Default Constructor called. Default Constructor called. Deleting... Destructor called. Destructor called. * 动态创建多维数组 new 类型名T[下标表达式1][下标表达式2]…; 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组。 例如: char (*fp)[3]; fp = new char[2][3]; char (*fp)[3]; fp fp+1 * 例6-18动态创建多维数组 #include using namespace std; int main() { float (*cp)[9][8]; int i,j,k; cp = new float[8][9][8]; for (i=0; i<8; i++) for (j=0; j<9; j++) for (k=0; k<9; k++) *(*(*(cp+i)+j)+k)=i*100+j*10+k; //通过指针访问数组元素 for (i=0; i<8; i++) { for (j=0; j<9; j++) { for (k=0; k<8; k++) //将指针cp作为数组名使用, //通过数组名和下标访问数组元素 cout< 动态存储分配 动态内存释放函数 void free( void *memblock ); 参数memblock:指针,指向需释放的 内存。 返回值:无 头文件: 动态存储分配 浅拷贝与深拷贝 浅拷贝 实现对象间数据元素的一一对应复制,拷贝和配拷贝对象共享同一个内存空间,当被拷贝对象数据成员发生改变,会影响到拷贝对象的值。 深拷贝 当被复制的对象数据成员是指针类型时,不是复制该指针成员本身,而是将指针所指的对象进行复制。即拷贝和配拷贝对象共享占用不同的内存空间,两者之间互不影响。 浅拷贝与深拷贝 例6-20对象的浅拷贝 #include using namespace std; class Point { //类的声明同例6-16 //…… }; class ArrayOfPoints { //类的声明同例6-18 //…… }; 浅拷贝与深拷贝 int main() { int number; cin>>number; ArrayOfPoints pointsArray1(number); pointsArray1.Element(0).Move(5,10); pointsArray1.Element(1).Move(15,20); ArrayOfPoints pointsArray2(pointsArray1); cout<<"Copy of pointsArray1:"< using namespace std; class Point { //类的声明同例6-16 …… }; class ArrayOfPoints { public: ArrayOfPoints(ArrayOfPoints& pointsArray); //其它成员同例6-18 }; 浅拷贝与深拷贝 ArrayOfPoints ::ArrayOfPoints (ArrayOfPoints& pointsArray) { numberOfPoints =pointsArray.numberOfPoints; points=new Point[numberOfPoints]; for (int i=0; i using namespace std; void main (void) { char city[80]; char state[80]; int i; for (i = 0; i < 2; i++) { cin.getline(city,80,','); cin.getline(state,80,'\n'); cout << "City: " << city << " Country: " << state << endl; } } 字符串 运行结果 Beijing,China City: Beijing Country: China Shanghai,China City: Shanghai Country: China 字符串处理函数 strcat(连接),strcpy(复制), strcmp(比较),strlen(求长度), strlwr(转换为小写), strupr(转换为大写) 头文件 字符串 例6.21 string类应用举例 #include #include using namespace std ; void trueFalse(int x) { cout << (x? "True": "False") << endl; } 字符串 int main() { string S1="DEF", S2="123"; char CP1[ ]="ABC"; char CP2[ ]="DEF"; cout << "S1 is " << S1 << endl; cout << "S2 is " << S2 << endl; cout<<"length of S2:"<
/
本文档为【县疾病预防控制中心突发重大传染病疫情应急处置预案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索