Как объявить диапазон индексов массива не с нуля и работать с ним? - C (СИ)
Формулировка задачи:
Например, надо объявить массив А[4..9][5..8] . Массив статический естественно. Работа с ним полагаю будет идентична?
Решение задачи: «Как объявить диапазон индексов массива не с нуля и работать с ним?»
textual
Листинг программы
int _arr[4];//_arr[0 .. 3] int* arr = _arr - 5;//arr[5 .. 8] int _arr2d[6][4];//_arr2d[0 .. 5][0 .. 3] int(* arr2d)[4] = _arr2d - 4;//arr2d[4 .. 9][0 .. 3] int _funnyArr[21];//_funnyArr[0 .. 20] int* funnyArr = _funnyArr + 10;//funnyArr[-10 .. 10]
Объяснение кода листинга программы
- Объявляется одномерный массив _arr размером 4.
- Указатель на первый элемент массива _arr присваивается переменной arr.
- В результате, arr указывает на диапазон элементов массива _arr, начиная с индекса 5 и до 8 (включительно).
- Отнимая 5 от _arr, мы смещаем начало диапазона, который теперь указывает на элементы массива, начиная с индекса 5 и до 8 (включительно).
- Аналогично объявляется двумерный массив _arr2d размером 6 на 4.
- Указатель на первый элемент первого столбца массива _arr2d присваивается переменной arr2d.
- В результате, arr2d указывает на диапазон строк массива _arr2d, начиная с индекса 4 и до 9 (включительно), и на каждый из столбцов массива _arr2d.
- Отнимая 4 от _arr2d, мы смещаем начало диапазона, который теперь указывает на строки массива, начиная с индекса 4 и до 9 (включительно), и на каждый из столбцов массива _arr2d.
- Объявляется массив _funnyArr размером 21.
- Указатель на 11-й элемент массива _funnyArr присваивается переменной funnyArr.
- В результате, funnyArr указывает на диапазон элементов массива _funnyArr, начиная с индекса -10 и до 10 (включительно).
- Отнимая 10 от _funnyArr, мы смещаем начало диапазона, который теперь указывает на элементы массива, начиная с индекса -10 и до 10 (включительно).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д