Объявление массивов в соответствии с пользовательским вводом - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь объявить массивы в зависимости от ввода пользователя, подумайте, если пользователь вводит 2, тогда мне нужно объявить 2 массива.как: int case1[10]={},case2[10]={}, я попробовал это с помощью макросов CONCAT , но это не сработало, так как мы можем это сделать?

1 Ответ

0 голосов
/ 28 апреля 2019

Вы не можете этого сделать.Объявления переменных - это время компиляции задолго до того, как пользователь начинает взаимодействовать с программой (во время выполнения).Макросы также раскрываются во время компиляции.

Но когда у вас есть переменные с именами 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] для доступа к элементам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...