ВУЗ:
Составители:
63
Тогда прибавление к p 1 даст указатель на следующий элемент,
прибавление 2 – на элемент через один , вычитание 1 – на предыдущий
элемент и т. д.
Для доступа к такому элементу, смещенному на i ячеек относительно
указателя, используется операция разыменования следующим способом:
*(p+i)
Здесь скобки необходимы, т.к. приоритет операции * выше, чем
операции +.
Язык C позволяет использовать и более короткую запись, с
использованием операции индексирования :
p[i]
Таким образом, операция индексирования применима не только к
массивам , но к любым другим указателям (мы говорили, что имя массива
есть указатель на его первый элемент).
То есть запись m[0] для массива m означает смещение на нуль ячеек
относительно его первого элемента. Именно поэтому массивы в C
индексируются с нуля.
Вместо операции разыменования указателя *p можно также
использовать p[0], но в такой ситуации запись *p короче и более понятна.
Таким образом, при передаче массива в функцию мы фактически
передаем указатель на его первый элемент. Это дает возможность работать
с массивами любой длины , применяя к указателю операцию
индексирования . Поэтому при написании функций , принимающих через
параметры массивы , вместо типа «массив» можно использовать тип
«указатель» . Исключение составляют многомерные массивы , в которых
компилятору должны быть известны все размерности массива, кроме
одной. Так , при описании параметра как int m[][] и доступа к нему через
m[i][j], [i][j] будут рассмотрены как две операции индексирования , и это
int
int
int
int
…
…
p
p+2
p+1
p-1
63 p p+2 … int int int int … p-1 p+1 Тогда прибавление к p 1 даст указатель на следующий элемент, прибавление 2 – на элемент через один, вычитание 1 – на предыдущий элемент и т.д. Для доступа к такому элементу, смещенному на i ячеек относительно указателя, используется операция разыменования следующим способом: *(p+i) Здесь скобки необходимы, т.к. приоритет операции * выше, чем операции +. Язык C позволяет использовать и более короткую запись, с использованием операции индексирования: p[i] Таким образом, операция индексирования применима не только к массивам, но к любым другим указателям (мы говорили, что имя массива есть указатель на его первый элемент). То есть запись m[0] для массива m означает смещение на нуль ячеек относительно его первого элемента. Именно поэтому массивы в C индексируются с нуля. Вместо операции разыменования указателя *p можно также использовать p[0], но в такой ситуации запись *p короче и более понятна. Таким образом, при передаче массива в функцию мы фактически передаем указатель на его первый элемент. Это дает возможность работать с массивами любой длины, применяя к указателю операцию индексирования. Поэтому при написании функций, принимающих через параметры массивы, вместо типа «массив» можно использовать тип «указатель». Исключение составляют многомерные массивы, в которых компилятору должны быть известны все размерности массива, кроме одной. Так, при описании параметра как int m[][] и доступа к нему через m[i][j], [i][j] будут рассмотрены как две операции индексирования, и это
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »