如果您无法下载资料,请参考说明:
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<<