Насколько я понимаю, const относится только к расположению c
Нет. Вы не можете изменить расположение массива в любом случае. Что вы, вероятно, имеете в виду, если у вас есть int * const
, то это действительно постоянный указатель на модифицируемую int
. Однако int const c[2];
- это массив из 2 константных целых. Таким образом, вы должны инициализировать их при объявлении массива:
int const c[2] = {0, 1};
Instst:
int main(void) {
int c[2];
int* const foo = c;
foo[0] = 0;
foo[0] = 1;
//foo = malloc(sizeof(int)); doesn't work, can't modify foo, as it's constant
}