ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »
