Программирование на языке С. Наместников С.М. - 14 стр.

UptoLike

Составители: 

14
int* ptr_ar = array;
т.е. имя массива задает его адрес. Следует отметить, что величины &array[0] и
array являются константами, т.е. не могут менять своего значения. Это
означает, что массив (как и переменная) не меняют своего адреса, пока
существуют в зоне своей видимости.
Формально, имея указатель на массив, можно считывать и записывать в
него значения
элементов. Вначале, когда указатель указывает на первый
элемент, его значение можно менять следующим образом:
int a = *ptr_ar;
*ptr_ar = 20;
Для того чтобы перейти к следующему элементу массива, достаточно
выполнить операцию
ptr_ar += 1;
или
ptr_ar++;
Особенностью применения данной операции является то, что адрес, т.е.
значение указателя ptr_ar изменится не на единицу, а на четыре, ровно на
столько, сколько занимает один элемент в памяти ЭВМ, в данном случае
четыре байта. В результате указатель ptr_ar будет указывать на следующий
элемент массива, с которым можно работать также как и с
предыдущим.
В языке С при работе с массивами через указатель допускается более
простая форма чем рассмотренная ранее. Допустим, что ptr_ar указывает на
первый элемент массива array. Тогда для работы с элементами массива можно
пользоваться следующей записью:
int *ptr_ar = array;
ptr_ar[0] = 10;
ptr_ar[1] = 20;
т.е. доступ к элементам массива осуществляется по его индексу.
Массивы удобно передавать функциям через указатели. Пусть имеется
функция вычисления суммы элементов массива:
int sum(int* ar, int n);
и массив элементов
int array[5] = {1,2,3,4,5};