История изменений
Исправление 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.