Существует разница между массивом целых чисел и массивом указателей на int
. В вашем случае ptrArr1
- это указатель на массив целых чисел с пробелом для двух целых чисел. Поэтому вы можете назначить int
только ptrArr1[1] = 2
, но не адрес. Сравнить
int xs[] = { 1, 2, 3 }; // an array of integers
int y0 = 42;
int *ys[] = { &y0, &y0 }; // an array of pointers to integers
Теперь у вас также могут быть указатели, указывающие на первый элемент xs
соотв. ys
int *ptr_xs = &xs[0];
int **ptr_ys = &ys[0];
// which can be simplified to:
int *ptr_xs = xs;
int **ptr_ys = ys;
Для шага упрощения вы должны взглянуть на Что такое распадающийся массив?