根据用户输入声明数组

时间:2019-04-28 05:45:05

标签: c arrays variables macros variable-declaration

我正在尝试根据用户输入声明数组, 考虑如果用户输入2,那么我需要声明2个数组。 像:int case1[10]={},case2[10]={}, 我使用宏 CONCAT 进行了尝试,但没有成功,那么我们该怎么做?

1 个答案:

答案 0 :(得分: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]访问元素。