Консультация № 160478
14.02.2009, 21:45
0.00 руб.
0 2 1
Здравствуйте уважаемые эксперты. Только начал изучение языка Си и у меня появился небольшой вопрос можно ли как нибудь обявить чтобы массив начинался не с нуля, а с любого другого числа?

Обсуждение

Неизвестный
14.02.2009, 21:55
общий
Если Вы имеете ввиду стандартный массив типа int arr[100]; то нет. Кстати, это может доставлять проблемы только по неопытности. В подавляющем большинстве случаев это вполне удобно. Если же Вам непременно нужно нумеровать не с нуля то ничто не мешает создать свой класс-массив в котором эти проблемы будут решены. Но прежде чем делать это подумайте о том надо ли это или нет на самом деле.
Неизвестный
15.02.2009, 15:01
общий
это ответ
Здравствуйте, Nemesis-201!

Можно просто сместить указатель на нужную позицию. Например, если у Вас есть массив из 50 элементов, а вы хотите использовать индексы {-25..24},то новый нулевой элемент массива должен указывать на старый элемент 25:

int* NewArr = &Arr[25];// =Arr + 25;

Не забывайте, что при удалении массива нужно указывать начальный адрес. Т.е, либо сохранять саму переменную Arr, либо сдвигать обратно переменную NewArr.
Такая техника чревата ошибками в дальнейшем, поэтому лучше работу с этим массивом упаковать в класс.
Форма ответа