- •Создание простой структуры.
- •Инициализация структуры.
- •Передача структур в функции.
- •Описание массива структур.
- •Определение элементов массива структур.
- •Вложенные структуры. Иногда бывает удобно, когда одна структура содержит другую.
- •Описание и инициализация указателя на структуру.
- •Доступ к элементу структуры при помощи указателя.
- •Передача информации о структурах функциям. Использование элементов структуры.
- •Передача информации о структурах функциям. Использование элементов структуры.
- •Передача информации о структурах функциям. Использование адреса структуры.
- •Передача информации о структурах функциям. Использование массива.
- •Имя массива можно использовать для передачи в функцию указателя на первую структуру в массиве.
- •Затем можно использовать арифметическую операцию над указателем, чтобы передвигать его на последующие структуры в массиве.
- •Структуры и битовые поля.
- •Структуры. Их дальнейшее использование.
- •Объединения.
- •Объединения: синтаксис и правила.
- •Создание простого объединения.
- •Вспомогательные средства.
- •Использование typedef.
- •Сложные формы данных.
- •Использование enum.
Передача информации о структурах функциям. Использование адреса структуры.
Для передачи информации о структуре функции можно использовать адрес структуры в качестве аргумента. Это хорошо, поскольку адрес представляет собой только одно число. Так как функция должна работать со структурой funds, она тоже должна использовать шаблон структуры funds.
/* передача адреса структуры в функцию */(на счет примера точно не знаю..весь нужен наверное)
#include<stdio.h>
struct funds {
char *bank;
float bankfund;
char *save;
floatsavefund; } stan = {
"Senior tomatoes Bank",
1023.43,
"Savings and lendings of Snoopy",
4239.87
};
floatsum(struct funds *);
voidmain()
{
float total;
total=sum(&stan);
printf ("Stan has only %.2f dollars.\n", total );
}
float sum(struct funds *money)
{
return ( money->bankfund + money->savefund);
}
мы должны применять операцию & для получения адреса структуры. В отличие от имени массива имя структуры само по себе не является синонимом своего адреса.
Передача информации о структурах функциям. Использование массива.
аргументы функции передают значения в функцию. Структура гораздо сложнее, чем отдельная переменная, поэтому неудивительно, что саму структуру нельзя использовать в качестве аргумента функции. (Это ограничение снято в некоторых новых реализациях.)
Передача информации о структурах функциям. Использование массива.
Предположим, у нас есть массив структур. Имя массива является синонимом его адреса, поэтому его можно передать функции. С другой стороны, функции будет необходим доступ к структурному шаблону
/* передача массива структур в функцию */
ПРИМЕР нужен наверное
#include<stdio.h>
struct funds {
char *bank;
float bankfund;
char*save;
float savefund; } jones[2] ={
{
"Senior tomatoes Bank",
1023.43,
"Savings and lendings of Snoopy",
4239.87
},
{
"Honest Jack's Bank",
976.57,
"Accumulation by prior plan",
1760.13
}
};
float sum(struct funds *);
void main()
{
float total;
total=sum(jones);
printf ("Jonsons have only %.2f dollars.\n" , total);
}
floatsum (struct funds *money)
{
float total;
inti;
for( i = 0, total = 0; i < 2; i++ , money++)
total+= money->bankfund + money->savefund;
return(total);
}
Вот два основных замечания:
Имя массива можно использовать для передачи в функцию указателя на первую структуру в массиве.
Затем можно использовать арифметическую операцию над указателем, чтобы передвигать его на последующие структуры в массиве.
Использование имени массива является просто косвенным способом передачи адреса структуры.
Структуры и битовые поля. Структуры. Их дальнейшее использование.