我正在尝试根据用户输入声明数组,
考虑如果用户输入2,那么我需要声明2个数组。
像:int case1[10]={},case2[10]={}
,
我使用宏 CONCAT 进行了尝试,但没有成功,那么我们该怎么做?
答案 0 :(得分:0)
您不能那样做。变量声明是编译时的事情,远早于用户与程序进行交互(在运行时)。宏也会在编译时扩展。
但是只要您有名为foo1
,foo2
,foo3
等的变量,为什么不只使用数组呢?然后,您可以拥有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]
访问元素。