一旦定义了一个变量,编译时,系统就会分配相应的内存空间,而且这块空间在程序生存期都不能由系统在分配。但程序设计的要求是千变万化的,内存空间往往需要根据进程中处理的数据量和对数据处理的变化而变化,为此,c++提供了程序运行时的动态存储分配机制。
关键字:new和delete
一般语法形式:指针变量=new 类型;
delete 指针变量;
delete []指针变量;(数组)
/////////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
void App(int * & pa, int n);
int main()
{
int *ary = NULL, *t, i, n;
cout << "n= "; cin >> n;
App(ary, n); //调用函数,动态分配数组
for (i = 0; i < n; i++)
{
ary[i] = 10 + i; cout << ary[i] << " "; //对动态数组元素赋值
}
delete[]ary;
}
void App(int * & pa, int len) //pa是指针引用参数
{
pa = new int[len]; //动态分配数组
if (pa == NULL)
{
cout << "allocation faiure\n"; return;
}
for (int i = 0; i < len; i++) pa[i] = 0;
}
程序中的App函数用于申请指定长度的动态数组。
注意,该函数的第一个形式参数:int *&pa
是指针应用参数。调用函数后,pa是ary的别名,new申请的内存地址写入pa,即写入ary。