Книга: Язык Си - руководство для начинающих
Использование элементов структуры
Использование элементов структуры
Поскольку элемент структуры является переменной с единственным значением (т.е. типа int или одного из его "родственников" - char, float, double или указатель), он может быть передан как аргумент функции. Простая программа финансовых расчетов на рис. 14.6, которая прибавляет взнос клиента к его счету, иллюстрирует этот способ. Заметим, между прочим, что мы объединили определение шаблона, описание переменной и инициализацию в один оператор.
/* передача элементов структуры как аргументов функции */
struct funds {
char *bank;
float bankfund;
char *save;
float savefund; }
stan = { " Банк синьора Помидора",
1023.43,
" Сбережения и займы Снупи",
4239.87 };
main( )
{
float total, sum( );
extern struct funds stan; /* необязательное описание */
printf("У Стэна всего %.2f долл.n", sum(stan.bankfund,
stan.savefund));
}
/* складывает два числа типа float */
float sum(x, у);
float x, у;
{ return( x + y); }
РИС. 14.6. Программа, передающая функции аргументы, являющиеся элементами структуры.
Результат выполнения этой программы:
У Стэна всего 5263.30 долл.
Вот это да, она работает. Заметим, что функция sum( ) "не знает", или же си безразлично, являются ли элементами структуры фактические аргументы; она только "требует", чтобы они имели тип float.
Конечно, если вы хотите, чтобы программа воздействовала на значение элемента в вызывающей программе, можно передать ей адрес этого элемента:
modify(&stan.bank fund);
и тогда получилась бы функция, которая изменила бы банковский счет в структуре stan.
Второй способ передачи информации о структуре заключается в возможности сообщить суммирующей функции, что она имеет дело со структурой.
- Изменения, связанные с устранением неявных допущений относительно предполагаемых размеров элементов данных
- Вставка и удаление с использованием бинарного дерева
- ГЛАВА 3. ИСПОЛЬЗОВАНИЕ СТРУКТУР ДАННЫХ
- Использование адреса структуры
- Использование массива
- Восстановление с использованием инструмента gbak
- Типы страниц и их использование
- Использование констант
- Создание свободно позиционируемых элементов
- Использование переменной окружения ISC_PATH
- Использование сервера Yaffil внутри процесса
- Использование CAST() с типами дата