Слайд 2


Приклад використання функції для заповнення змінної
today типу struct

Приклад використання функції для заповнення змінної today типу struct Date даними поточної
Date даними поточної дати:
struct Date today ;
today = GetCurDate ( ) ;
printf (“Сьогодні: %d - %d - %d р.”, today.d, today.m,
today.y );
Використовують різні способи передавання структур у
функцію для опрацювання:
- цілі структури через відповідні параметри-структури;
- адреси структур через параметри - вказівники на структури;
- передавання окремих полів структур.

Слайд 3


Приклад: задано масив структур, в яких зберігаються
персональні дані (шаблону

Приклад: задано масив структур, в яких зберігаються персональні дані (шаблону структур присвоєно
структур присвоєно ім’я
PDAT). Поле workplace задає місце праці:
typedef struct person_data {

char workplace [60];
} PDAT;
Треба внести зміни місця праці в масив структур.
Кілька варіантів
Передавання у функцію значення всієї структури.
Функція замінює найменування oldname на нове і
повертає опрацьовану cтруктуру.

Слайд 4


#include
PDAT ChangeWorkPlace1 (PDAT member)
{
char * oldname

#include PDAT ChangeWorkPlace1 (PDAT member) { char * oldname =“ старе_найменування”; char
=“ старе_найменування”;
char * newname=“ нове_найменування”;
if ( strcmp (member.workplace, oldname )= = 0)
strcpy (member.workplace, newname );
return member;
2 –> у буфер обміну
}

Слайд 5


Для внесення змін у всю базу даних функцію
застосовують циклічно:
#

Для внесення змін у всю базу даних функцію застосовують циклічно: # define
define n 100
PDAT persondat [n];
… /* заповнення даними масиву persondat [n] */
for ( i=0; i persondat [i]= ChangeWorkPlace1 (persondat [i]);
3 -> присвоєння 1 -> у форм.
параметр
Ця версія нераціональна, оскільки для кожної структури
масиву тричі виконується її копіювання (1,2,3 ), навіть,
якщо поля взагалі не змінюються.

Слайд 6


2. Використання вказівника на структуру (формальний
параметр pmemb ). У разі

2. Використання вказівника на структуру (формальний параметр pmemb ). У разі виклику
виклику функції цей параметр
отримує адресу відповідної структури, тому функція
звертається безпосередньо до потрібних полів без
копіювання.
void ChangeWorkPlace2 (PDAT * pmemb)
{
char * oldname =“ старе_найменування”;
char * newname=“ нове_найменування”;
if ( strcmp (pmemb ->workplace, oldname )= = 0)
strcpy (pmemb ->workplace, newname );
}

Слайд 7


Для внесення змін у весь масив:
for ( i=0; i

Для внесення змін у весь масив: for ( i=0; i ChangeWorkPlace2 (persondat
i++ )
ChangeWorkPlace2 (persondat +i ); /*або
@persondat[i]*/
3. Використання формального параметру workname, що
задає адресу рядка, який треба перевірити. Відповідним
фактичним параметром у викликах функції має бути
адреса поля структури.
Имя файла: sl-part.pptx
Количество просмотров: 103
Количество скачиваний: 0