64指针和动态内存分配 所谓动态内存分配,是指程序由于某些原因而在运行过程中 才可以确定内存空间的需求,从而随时向操作系统提出内存 分配的请求 动态内存分配需要用到指针和new运算符,其一般形式为: pointer- new type; 若系统成功地为请求分配了内存,则指针 pointer的值将是 系统为程序所分配之内存的首地址:否则为一空指针 当程序不再使用动态内存时(包括程序退出之前)必须将动 态内存返还给系统。释放动态内存需要用到dee运算符, 其一般形式为: delete point
6.4 指针和动态内存分配 所谓动态内存分配,是指程序由于某些原因而在运行过程中 才可以确定内存空间的需求,从而随时向操作系统提出内存 分配的请求。 动态内存分配需要用到指针和 new 运算符,其一般形式为: pointer = new type; 若系统成功地为请求分配了内存,则指针 pointer 的值将是 系统为程序所分配之内存的首地址;否则为一空指针。 当程序不再使用动态内存时(包括程序退出之前)必须将动 态内存返还给系统。释放动态内存需要用到 delete 运算符, 其一般形式为: delete point;
由于C艹+语言的变量说明非常灵活,所以为单个变量申请动 态内存的实用价值不大,通常都是为一个数组申请一块动态 内存(称为动态数组)。申请动态数组的一般形式为: pointer= new type[/[/[/.i 其中:sze为一整型表达式,各c均为整型常量。当动态数 组的维数大于1时,接受动态数组首地址的指针也应当是 个多维数组指针。例 int (p)[4] p= new int[n 4] char 3],c (*cp)2][3], cp= new char[(x+ y*k2]3: cq=new charX yI 释放动态数组时,需使用如下的一般形式: delete [p
由于 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 *Create Tab(int n) nt p p= new int[n] return p: It *ip= Create Tab(20); if( I=O) ∥对动态数组ip的一些应用 delete [ip
int *CreateTab(int n) { int *p; p = new int[n]; return p; } int *ip = CreateTab(20); if(ip != 0) { // 对动态数组 ip 的一些应用 } delete []ip;
65引用 6.51引用的说明与使用 storage type &ref name <=var; 其 “&”是引用说明符(注意,它与取地址运算符和 按位与运算符同形) 般情况下,在说明一个引用的同时需要用一个与其数据类 型相同的变量对其进行初始化。这是因为引用不是变量 是用户为某一变量所起的别名(Aas)。例: int i=5 &ri= i cout < ri < endl: ∥输出5 ri+=8 cout <<i << endl ∥输出13
6.5 引用 6.5.1 引用的说明与使用 <storage> type &ref_name <= var>; 其中:符号“&”是引用说明符(注意,它与取地址运算符和 按位与运算符同形)。 一般情况下,在说明一个引用的同时需要用一个与其数据类 型相同的变量对其进行初始化。这是因为引用不是变量,它 是用户为某一变量所起的别名(Alias)。例: int i = 5, &ri = i; cout << ri << endl; // 输出 5 ri += 8; cout << i << endl; // 输出 13
若在说明引用时没有将一个变量与之联系起来,则C++将为 该引用生成一个无名的临时变量,而引用名即为该临时变量的 名字。例: nt i=5 &ri r=1: ∥将变量ⅰ的值赋给临时变量ri ri+=8: cout <<i < endl ∥输入为5 在一个程序中,除了可以说明对一般变量的引用外,还可以说 明对指针的引用。但由于引用不是变量,所以不得说明引用的 引用。例下面的说明就是错误的: int i. &ri=i &&rri= ri
若在说明引用时没有将一个变量与之联系起来,则 C++ 将为 该引用生成一个无名的临时变量,而引用名即为该临时变量的 名字。例: int i = 5, &ri; ri = i; // 将变量 i 的值赋给临时变量 ri ri += 8; cout << i << endl; // 输入为 5 在一个程序中,除了可以说明对一般变量的引用外,还可以说 明对指针的引用。但由于引用不是变量,所以不得说明引用的 引用。例下面的说明就是错误的: int i, &ri = i, &&rri = ri;