繁体   English   中英

根据用户输入声明数组

[英]Declaring arrays according the user input

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

你不能这样做。 变量声明是编译时的事情,远早于用户与程序进行交互(在运行时)。 宏也在编译时扩展。

但是,每当您拥有名为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]访问元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM