Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
114-124!!!.docx
Скачиваний:
4
Добавлен:
11.09.2019
Размер:
53.35 Кб
Скачать

Передача информации о структурах функциям. Использование адреса структуры.

Для передачи информации о структуре функции можно использовать адрес структуры в качестве аргумента. Это хорошо, поскольку адрес представляет собой только одно число. Так как функция должна работать со структурой 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);

}

мы должны применять операцию & для получения адреса структуры. В отличие от имени массива имя структуры само по себе не является синонимом своего адреса.

  1. Передача информации о структурах функциям. Использование массива.

аргументы функции передают значения в функцию. Структура гораздо сложнее, чем отдельная переменная, поэтому неудивительно, что саму структуру нельзя использовать в качестве аргумента функции. (Это ограничение снято в некоторых новых реализациях.)

Передача информации о структурах функциям. Использование массива.

Предположим, у нас есть массив структур. Имя массива является синонимом его адреса, поэтому его можно передать функции. С другой стороны, функции будет необходим доступ к структурному шаблону

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

ПРИМЕР нужен наверное

#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);

}

Вот два основных замечания:

  1. Имя массива можно использовать для передачи в функцию указателя на первую структуру в массиве.

  2. Затем можно использовать арифметическую операцию над указателем, чтобы передвигать его на последующие структуры в массиве.

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

  1. Структуры и битовые поля. Структуры. Их дальнейшее использование.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]