簡體   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