一、动态分配数组
使用动态内存,可以轻而易举地解决这样的问题:在程序运行时产生任意大小的“数组” 。
动态分配一维或多维数组的方法是由指针管理数组,二维以上数组按一维数组方式来处理,具体步骤为:
①定义指针p;
②分配数组空间,用来存储数组元素,空间大小按元素个数计算;
③按一维数组方式使用这个数组(例如输入、输出等);
若是一维数组,则元素为p[i];若是二维数组,则元素为p[i*M+j], 其中M为列元素个数,以此类推。
④释放数组空间;
如:计算N*N二维数组的元素平均值
#include <iostream>
using namespace std;
double AVE(double *A,int N) //计算N*N二维数组元素的平均值
{
int i,j,sum=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++) sum=sum+*(A+i*N+j);
return sum/(N*N);
}
int main()
{
int i,j,n=4; cin>>n;
double *A=new double[n*n]; //分配“数组”A[n][n]
for (i=0;i<n;i++)
for (j=0;j<n;j++) cin>>*(A+i*n+j); //输入数据到A[i][j]
cout<<"detA="<<AVE(A,n)<<endl;
delete [] A; //释放“数组”
return 0;
}
二、动态分配字符串
实际编程中,字符串类型表示文字信息数据,其特点是字符长度不固定。通过动态分配字符串,根据程序的需要确定字符串的实际长度。 动态分配字符串的方法是由字符指针管理字符串,具体步骤为:
①定义字符指针;
②分配字符串空间,用来存储字符串;
③使用这个字符串(例如输入、输出等);
④释放字符串空间;
char *p=new char[1000]; //分配字符串空间
cin>>p; //输入字符串
cout<<p; //输出字符串
delete [] p; //释放字符串空间