您的位置:首页 > 编程语言 > C语言/C++

在C++中如何定义一个行数和列数比较大的矩阵

2013-04-23 19:40 351 查看
在C++中,定义一个行数和列数为常量的矩阵很简单,例如:

double A[10][15];

当这条语句在一对{ }之间时,为在函数内部定义的常规变量,它使用自动存储空间,被称为自动变量,这意味着他们在所属的函数被调用时自动产生,在函数结束时消亡,其作用域为包含它的代码块,通常存储在栈中,遵循后进先出的顺序。然而在下面两种情况下,这样定义是不行的。

其一,如果矩阵的尺寸较大,例如,A是400*400的double型矩阵,这样的定义方式会使程序运行时出错。因为栈空间的大小是有限的,这个A足以“撑破”栈空间。解决的办法是把A定义成全局变量,方式有两种:一是在函数外面定义它;另一种是在声明时使用关键字static。
其二,如果矩阵大小要等到程序运行时才确定,也即矩阵的行数和列数是变量。那么应该使用内存动态分配,即让程序在运行时分配内存。
定义成全局固然能解决问题,但是这么大的矩阵始终占用内存还是有点遗憾,动态分配内存不但能解决大小问题,而且当不需要时还能回收其占用的内存。
在C++中动态分配一个矩阵可如下执行:假设m,n是已赋正整数值得整型变量,下面这段程序在内存中定义一个m*n的double型元素矩阵:
double **A = new double* [m];
for(inti=0;i<m;i++)
A[i]=new double
;
如此,可以通过A[i][j]访问A的i行j列元素。当不再需要时,应该回收:
for(int i=0;i<m;i++)
delete [] A[i];
delete [] A;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐