如何创建动态的二维数组?
发布网友
发布时间:2022-04-21 09:45
我来回答
共2个回答
热心网友
时间:2023-10-11 00:33
两种方法,祝你成功
1.new出来
//int *arr; //it can be any other type (char, float)
//arr = new int[n]; //n should be integer variable
#include <iostream.h>
void main()
{
int **arr;
int N,M;
cin >> N >> M;
arr = new int*[N];
for(int i=0;i<N;i++)
{
arr[i] = new int[M];
}
for(i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
arr[i][j]=2;
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
2.malloc出来
#include <stdio.h>
#include <malloc.h>
void main ()
{
int n; //用 malloc 函数定义二维数组
scanf("%d",&n);
int **a;
a=(int **)malloc( n*sizeof(int *)); //定义第一列
for(int i=0;i<n;i++)
a[i]=(int *)malloc(n*sizeof(int )); //定义行
for (i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=3;
printf("%d ",a[i][j]);//<<a[i][j]<<" ";
}
printf("\n");//cout<<endl;
}
printf("\n");//cout<<endl;
}
热心网友
时间:2023-10-11 00:34
这个写法不能实现二维数组,应该这样:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#define M 10
#define N 10
int main()
{
int i;
int **a;
a=(int **)malloc(sizeof(int *)*M);
for (i = 0; i<M; i++) {
a[i]=(int *)malloc(sizeof(int)*N);
}
return 0;
}
//---------------------------------------------------------------------------