Языки программирования для численных методов. Глушакова Т.Н - 63 стр.

UptoLike

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] будут рассмотрены как две операции индексирования, и это