конспект лекций, вопросы к экзамену

Передача структуры в функции

                                                              ZAP * p;

В этом обьявлении переменная p является указателем на поле типа ZAP.

Отметим одну важную особенность указателей на структуру. Доступ к элементам структуры, на которую настроен указатель,  осуществляется операцией ‘ ->’. Формат соответствующего выражения имеет вид:

                       Имя_указателя -> имя_элемента_структуры

Вторая возможность обращения к элементу структуры с помощью адресующего указателя – разыменование указателя и формирование уточненного имени:

(*имя_указателя).имя_элемента _структуры

Рассмотрим эти возможности  во фрагменте программы:

struct ZAP

     {

      int TN;

      char FIO[15];

      float NZP;

      float SUD;

      float VNR ;

      char ROSP[20];

      };

ZAP * p;

ZAP x;

int y=5;

p=&x;

p->TN = y;
(*p).TN=y;

Последние два оператора эквивалентны и посылают в поле TN переменной x, которая является структурой типа ZAP, значение y. Таким образом, последние операторы эквивалентны оператору x.TN = y;. Но в таком случае можно было обойтись и без указателя! В данном примере это действительно так, но указатели на структуры незаменимы при вызове функций. В чем мы убедимся, решая рассмотренную задачу с помощью программы, использующей функции.

Алгоритм решения этой задачи с использованием функций может иметь следующий вид:

Начало

указатель = адрес_нулевого_элемента_массива_Tab
вызвать функцию ввода

Vvod(указатель, N)
указатель = адрес_нулевого_элемента_массива_
Tab
вызвать функцию вывода

Vyvod(указатель, N)
конец

 

в этом алгоритме указатель – это указатель на структуру. При вызове функций Vvod и Vyvod им передаются значения указателя, предварительно настроенного на нулевой элемент массива Tab, и значения N, равного количеству элементов массива Tab. Предварительная настройка указателя необходима, поскольку он будет использоваться в функциях для организации циклов по просмотру массива Tab и значение его будет меняться.

03.08.2017; 08:00
просмотров: 137