二维动态数组怎么定义?
一维的两位大哥已经为我做了解答
如果是二维的是不是就是
CString strtemp;
GetDlgItemText(IDC_EDIT1, strtemp);
int nNum = atoi(strtemp);
int mNum = atoi(strtemp);
int *data = new int[nNum][mNum];
呵呵,有点笨哦!!!
问题点数:20、回复次数:6Top
1 楼mscf(扎西特勒)回复于 2004-05-01 23:36:44 得分 0
以前试过,好像只能留一维为变量,其它的需要常量Top
2 楼sgnaw(李逍遥)回复于 2004-05-01 23:46:35 得分 10
long **a;
a = (long **)malloc(M * N * sizeof(long));
...
用完了就
free(a);
---------------------------------------
举个用 new 的例子:
//DynamicArray.cpp 动态二维数组
#include <iostream>
using namespace std;
int main()
{
int ** x;
int i,j,rows(2),cols(3);
try {
//创建
x = new int * [rows];
for (int i = 0 ; i < rows; i++) x[i] = new int [cols];
//初始化
for( i=0; i<2; i++)
{
for( j=0; j<3; j++)
{
x[i][j] = i + j;
cout << x[i][j] << " ";
}
cout << endl;
}
//释放
for(int i=0; i<rows; i++) delete [ ] x[i];
delete [ ] x;
x = 0;
}
catch (xalloc) {
cout << "create dynamic array caused error." << endl;
}
}
/*
运行结果:
0 1 2
1 2 3
*/Top
3 楼pomelowu(羽战士)回复于 2004-05-02 00:04:58 得分 0
就是楼上的方法,用二重指针,然后分配空间。要不就用CArray,也是很方便的Top
4 楼bm1408(向va_list学习~不用VC好多年~)回复于 2004-05-02 00:29:17 得分 10
.有三中方法:
1)用vector;如:
vector< vector< int >> m( 4, vector<int>(5) );
for ( int i = 0; i < m.size(); i++ ) // 4
for ( int j = 0; j < m[i].size(); j++ ) //5
.....
2)int **p = new int *[ 4];
for ( int i = 0; i < 4; i++ )
p[i] = new int[5];
3)一维数组模拟:
int *p = new int[m*n];
for ( int i = 0; i < m ; i++ )
for ( int j =0; j < n; j++ )
p[i*n+j] = ..
Top
5 楼BitBlt(Raster Operater)回复于 2004-05-02 00:35:16 得分 0
学VB吧,VB干这个很简单的,
redim var(11,22)Top
6 楼simouse()回复于 2004-05-02 00:41:34 得分 0
#include "iostream"
using namespace std;
void show(int *array,int x,int y)
{
for(int i=0;i<x;i++)
{
for(int ii=0;ii<y;ii++)
cout<<"\t"<<array[i*x+ii];
cout<<endl;
}
}
int main(int argc, char* argv[])
{
int array[4][4]=
{
{1,2,3,4},
{4,5,6,7},
{8,9,10,11},
{12,13,14,15}
};
show((int*)array,4,4);
return 0;
}
Top




