в следующем коде:Пытаясь понять нотации массива
int main()
{
int i = 15, j = 1;
int *a[] = {&i, &j};
printf("%d", (*a)[0]);
return 0;
}
выход (*a)[0]
является 15
(значение I), однако, когда я попытался проверить (*a)[1]
это дает значение мусора. Я ожидал бы, что одно и то же выражение должно работать для всех записей в массиве, однако оно работает только для первого элемента в массиве.
'* a 'is' & i', '(* a) [0]' is '* (& i + 0)', '(* a) [1]' is '* (& i + 1)' это UB. – BLUEPIXY
(* a) дает вам первый элемент массива (тот же, что и [0]), следующий [0] дает int по этому адресу. Хотя (* a) [1] является int по адресу после адреса i – Micka