C++中动态分配二维数组的方法(zz)
#include
<
cstdlib
>
#include < iostream >
#include < cstring >
using namespace std;
int main( int argc, char * argv[])
... {
int N;
while(cin>>N)
...{
// 方案一
int array[N][N]; // 你用的是vc6吧,它不支持动态数组!
memset(array, 0, sizeof(array));
// 方案二
int (*array)[N] = (int(*)[N])new int[N*N]; //动态分配二维数组
memset(array, 0, sizeof(int)*N*N);
// 方案三
int **array = new int*[N];
for (int i=0;i<N;i++) ...{ // vc6也不支持重复定义循环变量i!
// 后面再出现同样的循环变量i,就会出错!
array[i] = new int[N];
memset(array[i], 0, sizeof(int)*N);
}
int n=1;
for(int m=0;m<N;m++)
for(int i=m,j=0;i>=0&&j<=m;i--,j++)
array[i][j]=n++;
for(int i=0;i<N;i++)
...{
for(int j=0;j<N;j++)
if(array[i][j]==0)
break;
else
cout<<array[i][j]<<" ";
}
//释放部分你就自己写了...
}
system("PAUSE");
return EXIT_SUCCESS;
}
#include < iostream >
#include < cstring >
using namespace std;
int main( int argc, char * argv[])
... {
int N;
while(cin>>N)
...{
// 方案一
int array[N][N]; // 你用的是vc6吧,它不支持动态数组!
memset(array, 0, sizeof(array));
// 方案二
int (*array)[N] = (int(*)[N])new int[N*N]; //动态分配二维数组
memset(array, 0, sizeof(int)*N*N);
// 方案三
int **array = new int*[N];
for (int i=0;i<N;i++) ...{ // vc6也不支持重复定义循环变量i!
// 后面再出现同样的循环变量i,就会出错!
array[i] = new int[N];
memset(array[i], 0, sizeof(int)*N);
}
int n=1;
for(int m=0;m<N;m++)
for(int i=m,j=0;i>=0&&j<=m;i--,j++)
array[i][j]=n++;
for(int i=0;i<N;i++)
...{
for(int j=0;j<N;j++)
if(array[i][j]==0)
break;
else
cout<<array[i][j]<<" ";
}
//释放部分你就自己写了...
}
system("PAUSE");
return EXIT_SUCCESS;
}