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

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

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

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

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

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

main.c

main.c

copy
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. Це явище буде розглянуто пізніше у цьому курсі.

Завдання

Swipe to start coding

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

У функції createStudent:

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

У функції main:

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

Рішення

Все було зрозуміло?

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

close

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

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

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

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

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

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

main.c

main.c

copy
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. Це явище буде розглянуто пізніше у цьому курсі.

Завдання

Swipe to start coding

Потрібно створити структуру 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

some-alt