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

single

Динамічне Виділення Структур

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

Розглянемо, як динамічно виділяти пам'ять у мові C.

Для виділення пам'яті у купі використовуйте функцію malloc() з бібліотеки stdlib.h:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
sizeof+struct
Note
Примітка

Коли ви динамічно виділяєте пам'ять для використання у програмі, ця пам'ять залишається зарезервованою, доки ви явно не звільните її за допомогою free().

main.c

main.c

12345678910111213141516171819
#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }

Якщо структура містить кілька полів різних типів даних, компілятор буде вирівнювати розмір полів так, щоб структура зручно зберігалася в пам'яті.

Після виконання завдання зверніть увагу, скільки байтів виділяється для структури з полями int та char. Це явище буде розглянуто пізніше в цьому курсі.

Завдання

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

Потрібно створити структуру Student і динамічно виділити для неї пам'ять за допомогою функції malloc().
Ваше завдання — ініціалізувати структуру зразковими значеннями та повернути вказівник на неї.

У функції createStudent:

  1. Використайте malloc() для виділення пам'яті під одну структуру Student.
  2. Перевірте, чи виділення було успішним (якщо ні — поверніть NULL).
  3. Присвойте стандартне ім'я за допомогою sprintf(), наприклад, "Alice Johnson".
  4. Присвойте значення для age, наприклад, 21.
  5. Присвойте значення для gpa, наприклад, 3.85.
  6. Поверніть вказівник на виділену структуру.

У функції main:

  1. Використайте функцію free() для звільнення виділеної пам'яті після використання.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt