Опрацювання структур у функціях Оскільки мова С інтерпретує структури як звичайні змінні, а не вказівники, можна передавати значення структури у функцію.

Презентация:



Advertisements
Похожие презентации
Вказівники Вказівник (або покажчик) – особливий тип даних, значенням якого є адреса певного байта оперативної памяті. Значення покажчика - це беззнакове.
Advertisements

Функції з неоголошеними параметрами Інколи у функції потрібно передати деяке число фіксованих параметрів та невизначене число додаткових. В цьому випадку.
Вказівники на функції В мові С імя функції є константним вказівником на перший байт виконавчого коду функції. Це адреса оперативної памяті, яка відповідає.
Консольне введення даних За призначенням клавіші клавіатури можна поділити на групи: – символьні; – клавіші керування: Home, End, …, Delete та чотири стрілки;
Класи пам'яті даних. Клас пам'яті, час існування та видимість об'єкта Кожен обєкт програми (змінна, функція,...) має свій тип і клас памяті. Тип визначає.
Електронні таблиці EXCEL Використання логічних формул і операцій при опрацюванні даних.
8 Практична робота 11 Налагодження готової програми За новою програмою Урок 38.
1 Підпрограми- процедури (Turbo Pascal 7.0) Підпрограми- процедури (Turbo Pascal 7.0)
Цикли в мові С++ Цикл - це процес виконання певного набору команд деяку кількість разів.
Таблиці та їхні властивості 10 клас. Таблиця як обєкт текстового документа має такі властивості: розмір таблиці – задається шириною таблиці в сантиметрах.
Оператори. Введення і виведення даних. Оператор присвоювання Оператори це команди програми. Оператор присвоювання є основним оператором мови програмування.
Запити в Access Запити в базі даних Запити використовуються для перегляду, зміни й аналізу даних різними способами. Основні операції з використанням.
Введення даних і виведення результатів. Використання присвоєння Нехай змінній а потрібно надати початкове значення 5, змінній b 10, змінній с -2,5, змінній.
Основи алгоритмізації та програмування Опрацювання табличних величин. Заняття 1. Алгоритми формування масивів, виведення масивів, зміни значень елементів.
Розділ 3. Алгоритмізація і програмування п Алгоритми й основні алгоритмічні структури. Складання обчислювальних алгоритмів.
Вказівники, масиви. Структури Проф. Куссуль Н.М..
Бройченко А.Г Підпрограми-функції (Turbo Pascal 7.0) Підпрограми-функції (Turbo Pascal 7.0) Інформатика-11 Тема-5.
Обмін даними з файлами У компілятор мови С не включено спецзасобів для введення/виведення даних, тому обмін даними реалізовано через бібліотечні функції.
Бази даних. Структура БД. Основні операції з базами даних.
Запити Ассess ПЛАН Перехресний запит Доповнення таблиці Вилучення записів Створення нової таблиці.
Транксрипт:

Опрацювання структур у функціях Оскільки мова С інтерпретує структури як звичайні змінні, а не вказівники, можна передавати значення структури у функцію через формальний параметр або повертати структуру як значення результату виконання функції. Шаблон структури повинен бути описаний перед функціями, які використовують даний тип структури. Наприклад: struct Date { int d; /* день */ int m; /* мiсяць */ int y; /* рiк */ }; ……………… struct Date GetCurDate ( void ) { ………..}

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

typedef struct person_data { … char workplace [60]; } PDAT; Треба внести зміни місця праці в масив структур. Кілька варіантів 1.Передавання у функцію значення всієї структури. Функція замінює найменування oldname на нове і повертає опрацьовану cтруктуру. #include PDAT ChangeWorkPlace1 (PDAT member) { char * oldname = старе_найменування; char * newname= нове_найменування;

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

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

3. Використання формального параметру workname, що задає адресу рядка, який треба перевірити. Відповідним фактичним параметром у викликах функції має бути адреса поля структури. char * ChangeWorkPlace3 (char * workname ) { char * oldname = старе_найменування; char * newname= нове_найменування; if ( ! strcmp ( workname, oldname )) strcpy ( workname, newname ); return workname; } Використання функції PDAT *pdat; /**/ for (pdat = persondat; pdat<persondat + n; pdat++) ChangeWorkPlace3 (pdat -> workplace );