C/C++ 语言里, 声明 数组大小时,只允许用常数,例如:
int a[10];
int b[5*4*3];
不允许用 变量。
如何将一个数组元素的个数设为输入的值呢,一般用动态分配。
int *a; // 声明为指针。
知道大小n后, 用动态分配:
a = (int *) malloc(sizeof(int) * n);
接下来就可以 把 a 看成 你 声明过 int a[n]; 了。
对初学者来说,你开个大数组,多给些单元,就可以了。
例如,你估计 你的 n = 10 到 1000 范围,你声明 int a[2000]; 就怎么也够用了。
现代计算机用虚拟存储,1000,2000 个单元,小意思了。
这其实就是动态开辟数组,需要使用到malloc函数
#include
using namespace std;
void main()
{
//比如要开辟int型的数组a[n]
int n,*a;
printf("请输入开辟数组的大小:");
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
printf("自动维数组赋值并打印输出:\n");
for(int i=0;i
a[i]=i;
}
for(int j=0;j
printf("%d\n",a[j]);
}
free(a);
}
//看明白就懂了
我当初学C的时候有过和你一样的想法,但是数组的内存只能静态分配,所以你必须指明数组的大小。
比如:int a[10];
char ch[] = "I love china!"。
一个显式指定大小,一个是隐式指定。
int i[7];
for(int x ; x < 6 ;++x)
{
i[x] = x; // x是数组第几个,值就是第几个
printf("第 i[%d] 个数是:%d",i[x],x);
}
是这个意思吗?
这个数组不能是变量,只能是常量,没法设置的。