Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Passing Structs to the Functions | Робота з вказівниками та структурами
Структури в C
Секція 2. Розділ 5
single

single

Passing Structs to the Functions

Свайпніть щоб показати меню

Функції можуть працювати зі структурами так само, як і зі звичайними змінними:

main.c

main.c

123456789101112131415161718192021
#include <stdio.h> // structure definition typedef struct { char name[50]; } Person; // function to display information about a person void printPerson(Person p) { printf("Name: %s\n", p.name); } int main() { // creating a structure and initializing its values Person person1 = {"John"}; // call a function to display information about a person printPerson(person1); return 0; }

Щоб функція могла «взаємодіяти» зі структурою, наприклад, змінювати поля існуючої структури, функція має приймати вказівник на структуру:

main.c

main.c

12345678910111213141516171819202122232425262728293031
#include <stdio.h> // structure definition typedef struct { char symbol; }Example; // function for changing the values of structure fields via a pointer void changePoint(Example* ptr, int newSymbol) { // check for NULL pointer if (ptr != NULL) { ptr->symbol = newSymbol; } } int main() { // create the Example structure and a pointer Example ptr1 = {'H'}; Example* ptr = &ptr1; printf("Old symbol: %c | %p\n", ptr1.symbol, &ptr1); // use function to change the field of structures changePoint(ptr, 'y'); printf("New symbol: %c | %p\n", ptr1.symbol, &ptr1); return 0; }

Структури можуть бути створені всередині функцій, і такі структури можуть "існувати" поза межами функцій (не локально), якщо функція повертає вказівник на таку структуру:

main.c

main.c

1234567891011121314151617181920212223242526272829303132
#include <stdio.h> #include <stdlib.h> // structure definition typedef struct { int value; }Example; // function creates a structure with the given field Example* CreateStruct(int setVal) { Example* ptr = (Example*)malloc(sizeof(Example)); // check for successful memory allocation if (ptr != NULL) { ptr->value = setVal; } return ptr; } int main() { // use function to create structure Example* ptrToStruct = CreateStruct(23); printf("Value inside struct: %d", ptrToStruct->value); free(ptrToStruct); // free memory return 0; }
Завдання

Проведіть, щоб почати кодувати

Ви керуєте невеликою командою з трьох співробітників, кожен з яких має погодинну ставку та кількість відпрацьованих годин на тиждень.
Ваше завдання — обчислити середню тижневу зарплату для всієї команди.

У функції calculateWeeklySalary:

  1. Прийміть структуру типу Employee як параметр.
  2. Отримайте доступ до полів hourlyRate та hoursWorked.
  3. Перемножте їх для обчислення тижневої зарплати для цього співробітника.
  4. Поверніть обчислену зарплату як double.

У функції calculateAverageSalary:

  1. Прийміть три структури Employee як параметри.
  2. Викличте calculateWeeklySalary() для кожного співробітника, щоб отримати їхню загальну оплату.
  3. Додайте всі три зарплати разом.
  4. Поділіть суму на 3.0, щоб отримати середню тижневу зарплату.
  5. Поверніть це середнє значення як double.

Example

Employee NameHourly RateHours WorkedWeekly Salary
Alice Johnson22.540900.00
Bob Smith18.038684.00
Carol White25.0421050.00

Average Weekly Salary: 878.00

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 5
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt