[英]Declaring arrays according the user input
我試圖根據用戶輸入聲明數組,考慮如果用戶輸入2,那么我需要聲明2個數組。 像: int case1[10]={},case2[10]={}
,我使用宏CONCAT進行了嘗試,但沒有成功,那么我們該怎么做呢?
你不能這樣做。 變量聲明是編譯時的事情,遠早於用戶與程序進行交互(在運行時)。 宏也在編譯時擴展。
但是,每當您擁有名為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]
訪問元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.