我是个菜鸟,所以我会说这个。以下是合法的(C99)吗?我不想一次存储多个数组。我可以创建一个最大需要长度的数组,只使用其中的一部分,但我宁愿这样做。
int main(){
double drm[15000];
//do some stuff
double drm[14000];
//do some other stuff
}
答案 0 :(得分:1)
不,你不能这样做。他们需要在不同的街区。你可以这样做:
int main(void)
{
{
double drm[15000];
// do some stuff
}
{
double drm[14000];
// do some other stuff
}
}
但为什么不调用一个函数呢?即使你把它们放在不同的块中,你也无法保证编译器对存储的作用。
答案 1 :(得分:0)
由于数组与C中的指针密切相关,因此您也可以使用动态数组。首先,分配一个包含15 000个元素的新双精度数组。如果您不再需要它,请将其删除。然后创建一个包含14 000个元素的新数组。
使用数组后不要忘记释放堆。人们往往会忘记这一点。此外,您应该检查分配是否成功。
int main(void)
{
double *drm = 0;
drm = (double*)malloc(15000 * sizeof(double));
// do something
free(drm);
drm = (double*)malloc(14000 * sizeof(double));
// do some other stuff
free(drm); // don't forget me
}
但是,我同意Carl Norum:改为使用函数。
答案 2 :(得分:0)
如果您不介意保留数据,可以使用malloc
和free
(或realloc
):
#include <stdlib.h>
int main(void)
{
double *drm = (double *)malloc(sizeof(double)*15000);
//do stuff
free(drm);
drm = (double *)malloc(sizeof(double)*14000);
//do other stuff
free(drm);
}