C++——动态内存分配3
动态创建多维数组 new 类型名T[下标表达式1][下标表达式2]…;
如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各维下标表达式的乘积。例如:
char (*fp)[3];//指向一维数组的指针,即指向一个整个数组,如果指针加1,会跳过整个数组。
fp = new char[2][3];//如果fp+1,则会跳到该二维数组的下一行。
#include<iostream>
using namespace std;
int main()
{ float (*cp)[9][8];
int i,j,k;
cp = new float[8][9][8];
for (i=0; i<8; i++)
for (j=0; j<9; j++)
for (k=0; k<9; k++)
*(*(*(cp+i)+j)+k)=i*100+j*10+k; //通过指针访问数组元素
for (i=0; i<8; i++)
{ for (j=0; j<9; j++)
{ for (k=0; k<8; k++)
cout<<cp[i][j][k]<<" ";
//将指针cp作为数组名使用,通过数组名和下标访问数组元素
cout<<endl;
}
cout<<endl;
}
}
动态存储分配函数(c语言)
分配:void *malloc( size );参数size:欲分配的字节数
返回值:成功,则返回void型指针。
失败,则返回空指针。
头文件:<cstdlib> 和 <cmalloc>
释放:void free( void *memblock );参数memblock:指针,指向需释放的内存。返回值:无
头文件:<cstdlib> 和 <cmalloc>