Язык Си - руководство для начинающих.

Использование адреса структуры.

     Мы будем решать ту же самую задачу, что и прежде, но при этом использовать адрес структуры в качестве аргумента. Это хорошо, поскольку адрес представляет собой только одно число. Так как функция должна работать со структурой funds, она тоже должна использовать шаблон funds. См. рис. 14.7.

Язык Си - руководство для начинающих.  

/* передача адреса структуры в функцию */

Struct funds {

 char *bank;

 float bankfund;

 char *save;

 float savefund;

 } stan = {

 "Банк синьора Помидора" ,

 1023.43,

 " Сбережения и займы Снупи" ,

 4239.87.

 };

Main( ).

{

Float total, sum( );

Printf(" У Стэна всего %.2f  долл.\n", sum(&stan) );

}

Float sum (money).

Struct funds *money;

}

Return( money-> bankfund + money-> savefund);

}

РИС. 14.7. Программа, передающая функции адрес структуры. Эта программа тоже выдает.

У Стэна всего 5263.30 долл.

Функция sum( ) имеет указатель (money) на структуру fund. Передача адреса &stan в функцию заставляет указатель money ссылаться на структуру stan. Затем используем операцию - > для получения значений элементов stan.bankfund и stan.savefund.

Эта функция также имеет доступ к названиям учреждений, хотя их не использует. Заметим, что мы должны применять операцию & для получения адреса структуры. В отличие от имени массива имя структуры само по себе не является синонимом своего адреса.

Наш следующий способ применим к массивам структур и является вариантом данного способа.