根据用户输入声明数组

问题描述 投票:1回答:1

我试图根据用户输入声明数组,考虑用户输入2,然后我需要声明2个数组。像:int case1[10]={},case2[10]={},我尝试使用宏CONCAT,但它没有用,所以我们怎么做呢?

c arrays variables macros variable-declaration
1个回答
0
投票

你不能这样做。变量声明是一个编译时间,早在用户与程序交互之前很久(在运行时)。宏也在编译时扩展。

但是每当你有变量名为foo1foo2foo3等时,为什么不使用数组?然后你可以有foo[0]foo[1]foo[2]等。

在您的情况下,标准的“动态阵列”技术适用。使用可变长度数组:

int n = get_user_input_somehow();
int arr[n][10];

或者使用传统的动态内存分配:

int n = get_user_input_somehow();
int (*arr)[10] = malloc(n * sizeof *arr);
if (!arr) {
    handle error
}

并且不要忘记在完成后释放内存:

free(arr);

在任何一种情况下,您都可以使用arr[i][j]来访问元素。

© www.soinside.com 2019 - 2024. All rights reserved.