printf("%d ", arr[chosen[i]]);
chosen[i]
соответствует значению, которое хранится в (i + 1
). элемент массива chosen
.
Но мне нужно больше данных для иллюстрации случая. Итак, давайте предположим, что следующие инициализации:
int i = 2;
int chosen[4] = {1,5,7,9}
int arr[9] = {6,2,7,23,9,16,11,44,2};
Предполагая, что i
равно 2
, chosen[i]
указывает на третий элемент массива chosen
и оценивается в значение 7
. Еще одно повторение ради обучения: chosen[i]
оценивается как 7
, если i
равно 2
. Обратите внимание, что подсчет индекса начинается с 0
, поэтому chosen[2]
означает третий элемент массива chosen
, а не второй.
После этого 7
будет использоваться для определения 8-го элемента массива arr
, a[7]
; a[7]
= 8-й элемент arr
.
Внутри a[7]
у нас есть значение 44
. Таким образом, в итоге мы печатаем 44
по:
printf("%d ", arr[chosen[i]]);
Итак,
printf("%d ", arr[chosen[i]]);
в нашем примере эквивалентно:
printf("%d ", arr[7]);
Чтобы продемонстрировать отношение в другой раз:
chosen[i] = NUMBER;
buffer = chosen[i];
printf("%d ", arr[buffer]);
эквивалентно
buffer = NUMBER;
printf("%d ", arr[buffer]);
, что также эквивалентно
count[i] = NUMBER;
printf("%d ", arr[count[i]);
и, конечно, эквивалентно:
printf("%d ", arr[NUMBER]);