c语言或c++如何自由创建数组

以int为例
如果我输入5 就建一个a[5]的数组
如果我输入5*4 就建一个a[5][4]的数组

求代码 求思路

%其实C++是不容许用变量来定义数组的,例如:int m;cin>>m; int a[m];这样是不行的。但是我们可以换一种思路。你看看这样,我们可以先申请的变量a,再用new运算符来建立临时数组。这样问题就解决了。用这个方法来解决上面你提到的两个问题(假设你向a中输入5),看代码:第一个问题, int a; cin>>a; int *p=new int[a]; 第二个问题,int a;cin>>a;int *p=new int[a*(a-1)]; 这样就可通过指针p来访问数组中的值了。%
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-31
那就用指针呗 指针是c和c++中最强大的武器
如创建一个a[5]数组
int *p = NULL;
int input = 0;
scanf("%d",&input);
p = (int *)malloc(input*sizeof(int));
创建一个二维数组 你需要定义一个双星的指针;
int **p;
int i;
int nRow = 0;
int nColume = 0;
scanf("%d",&nRow);
scanf("%d",&nColume);
p = (int **)malloc(nRow*sizeof(int*));
for(i = 0; i<nRow; i++)
{
p[i] = (int*)malloc(nColume*sizeof(int));
}
第2个回答  2010-08-31
c++中不可以动态建的,但是有方法可以做出这种效果
以一维数组为例吧
#include<iostream.h>
void main()
{
int rem;
int a[100];
cout<<"要建含几个元素的数组?"<<endl;
cin>>rem;
for(int i=0;i<rem;i++)
{
cout<<"请为第"<<i+1<<"个元素赋值"<<endl;
cin>>a[i];
}
}
第3个回答  推荐于2017-10-08
C语言:
int i=0;
scanf("%d",&i);//输入i
int *p=(int *)malloc(sizeof(int)*i);
C++:
int i=0;
cin>>i;
int *p=new int[i];

5*4的:
C语言:
int i=0,j=0;
scanf("%d",&i);//输入i
scanf("%d",&j);//输入j
int *p=(int *)malloc(sizeof(int)*i);
for(int k=0;k<i;k++)
{
p[k]=(int *)malloc(sizeof(int)*j);
}

C++:
int i=0,j=0;
cin>>i;
cin>>j;
int *p=new int[i];
for(int k=0;k<i;k++)
{
p[k]=new int[j];
}本回答被提问者采纳
相似回答