Lesson06 - 图文 联系客服

发布时间 : 星期二 文章Lesson06 - 图文更新完毕开始阅读4cdbd71cc281e53a5802ff89

6.4 指针和动态内存分配所谓动态内存分配,是指程序由于某些原因而在运行过程中才可以确定内存空间的需求,从而随时向操作系统提出内存分配的请求。动态内存分配需要用到指针和new 运算符,其一般形式为:pointer = new type;若系统成功地为请求分配了内存,则指针pointer 的值将是系统为程序所分配之内存的首地址;否则为一空指针。当程序不再使用动态内存时(包括程序退出之前)必须将动态内存返还给系统。释放动态内存需要用到delete 运算符,其一般形式为:delete point;由于C++ 语言的变量说明非常灵活,所以为单个变量申请动态内存的实用价值不大,通常都是为一个数组申请一块动态内存(称为动态数组)。申请动态数组的一般形式为:pointer = new type[size][c2][c3]…;其中:size 为一整型表达式,各ci均为整型常量。当动态数组的维数大于1 时,接受动态数组首地址的指针也应当是一个多维数组指针。例:int(*p)[4];p = new int[n][4];char(*cp)[2][3], *cq;cp = new char[(x + y) * k][2][3];cq = new char[x + y];释放动态数组时,需使用如下的一般形式:delete []p;int{*CreateTab(int n)int*p;p = new int[n];return p;}int*ip = CreateTab(20);if(ip != 0){// 对动态数组ip 的一些应用}delete []ip;6.5 引用6.5.1 引用的说明与使用type&ref_name<= var>;其中:符号“&”是引用说明符(注意,它与取地址运算符和按位与运算符同形)。一般情况下,在说明一个引用的同时需要用一个与其数据类型相同的变量对其进行初始化。这是因为引用不是变量,它是用户为某一变量所起的别名(Alias)。例:inti = 5, &ri = i;cout << ri << endl;ri += 8;cout << i << endl;// 输出5// 输出13