本站致力于分享传播知识!

在C/C++中关于如何输入一个数来任意确定数组大小

问题(想要实现输入变量确定数组长度)

一般数组的定义是不能用变量来作为维数的,
如:int a[n]是不行的;
数组的维数要用常量表达式定义,此常量表达式之恩那个包含整型字面值常量和枚举常量或用常量表达式初始化的const对象,非const变量以及要运行阶段才知道其值得const变量都不能用于定义数组的维数。

解决方法(使用动态数组)

要满足你所说的用户输入数组大小的要求,就要用动态数组。
用整型变量来举个例子如下:

C++中用下面定义:

int n;
std::cin >> n;
int *a = new int[n];

C语言中可以用malloc:

int n;
scanf("%d", &n);
int *a = (int*)malloc(n * sizeof(int));

解释说明

要追加一点说明就是动态数组是存储在堆上的,用完了一定要释放内存,否则会造成内存泄露。
释放内存的时候,malloc申请的内存free来释放,new申请的内存用delete释放。
举个单纯用C语言基础知识说明的例子(注意n<=100):

void maim ()
{
int a[100],i,n;
scanf("%d",&n);
for(i=0;i<=n;i++)
scanf("%d",&a[i]);
printf("%d\n",a[i]);
}