LINUX.ORG.RU

История изменений

Исправление no-such-file, (текущая версия) :

придумать пример без всяких злых кастов, где бы массивы могли пересекаться

Для начала нужно сообразить, что массивов в сишечке нет. Есть сахарок для определения фиксированного буфера на стеке. И другой сахарок для косвенного доступа с индексацией. Второй используется в частности для «динамических массивов». Но в целом это два разных случая использования []. Одно с другим никак не связано. Поэтому

int a[10]; // буфер из 10 целых
int *b = a + 3;  // b[0] == a[3]

Если ты не согласен, тогда помимо «настоящих» массивов придётся выдумать синтаксис для декларации динамических массивов (типа крестового new), а также синтаксис для слайсов, чтобы как раз можно было декларировать пересекающиеся подмассивы. И никакой арифметики указателей. Ну и тогда уже можно думать про a=b с копированием.

Исходная версия no-such-file, :

придумать пример без всяких злых кастов, где бы массивы могли пересекаться

Для начала нужно сообразить, что массивов в сишечке нет. Есть сахарок для определения фиксированного буфера на стеке. И другой сахарок для косвенного доступа с индексацией. Второй используется в частности для «динамических массивов». Но в целом это два разных случая использования []. Одно с другим никак не связано. Поэтому

int a[10]; // буфер из 10 целых
int *b = a + 3;  // b[0] == a[3]

Если ты не согласен, тогда помимо «настоящих» массивов придётся выдумать синтаксис для декларации динамических массивов (типа крестового new), а также синтаксис для слайсов, чтобы как раз можно было декларировать пересекающиеся подмассивы. И никакой арифметики указателей. Ну и тогда уже можно думать про a=b.