预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共23页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

内存空间的访问方式 计算机的内存储器被划分为一个个的存储单元。存储单元按一定的规则编号,这个编号就是存储单元的地址。每个字节是一个基本内存单元。 在C++程序中是如何从内存单元中存取数据呢? 1、通过变量名 在变量获得内存空间的同时,变量名成了相应内存空间的名称。 2、通过地址 如果当变量名不够方便或者根本没有变量名可用时,这是就需要直接用地址来访问内存空间。指针变量的声明对象指针例:使用指针来访问Point类的成员引用的概念#include<iostream> usingnamespacestd; voidmain(){ inti;int&j=i; i=5; i++; cout<<&i<<""<<&j<<endl; cout<<i<<""<<j<<endl; }#include<iostream> usingnamespacestd; classPoint{ private:intx,y; public: Point(intvx,intvy){x=vx;y=vy;} voidprint(){cout<<"x="<<x<<"y="<<y<<endl;} };voidmain(){ Pointp1(10,10); Point&pref=p1;//引用 cout<<"p1addr:"<<&p1<<"prefaddr:"<<&pref<<endl; p1.print();pref.print(); Pointp2(20,20),*pt; pt=&p2;//指针 cout<<"p2addr:"<<&p2<<"ptaddr:"<<pt<<endl; p2.print();pt->print(); }#include<iostream> usingnamespacestd; classA{ private:intx; public: A(intvx){ cout<<"Constructorcalled!"<<vx<<endl; x=vx; } ~A(){cout<<"Deconstructorcalled!"<<x<<endl;} voidprint(){cout<<"x="<<x<<endl;} };voidf1(A&voo){ cout<<"&voo="<<&voo<<endl; voo.print(); } voidmain(){ Aobj(10); obj.print(); cout<<"&obj="<<&obj<<endl; f1(obj); }#include<iostream> usingnamespacestd; chars[80]="HelloWorld"; char&replace(intk){returns[k];} char*rep(intk){return&s[k];} voidmain(){ replace(11)='!'; cout<<s<<endl; cout<<replace(1)<<endl; *rep(5)='+'; cout<<rep(0)<<endl; cout<<*rep(0)<<endl; cout<<replace(0)<<endl; }3.动态内存分配int*p=newint(200)则同时给变量赋上了初值200。 若分配失败,new将返回一个空指针:p=NULL。 用new创建一维整型数组,有2个元素int*S=newint[2]; //为对象动态分配 #include<iostream> usingnamespacestd; classPoint{ private:intx,y; public: Point(intvx=0,intvy=0){ cout<<"Constructoriscalled!"<<endl; x=vx;y=vy; } voidprint(){ cout<<x<<""<<y<<endl; } ~Point(){ cout<<"Decostructoriscalled!"<<endl; } }; voidmain(){ cout<<"为对象动态分配内存"<<endl; Point*p=newPoint(12,12); if(p==NULL){//p=NULL表示申请失败 exit(0); } p->print(); deletep;p=NULL; } 该对象是使用new运算符动态创建的,在使用delete 运算符释放它时,delete将会自动调用析构函数//动态创建对象数组 classPoint{ private:intx,y; public: Point(intvx=10,intvy=10){ x=vx;y=vy; } voidprint(){cout<<