Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Dynamisch Structuren Toewijzen | Werken met Pointers en Structs
C-Structs
Sectie 2. Hoofdstuk 4
single

single

Dynamisch Structuren Toewijzen

Veeg om het menu te tonen

Een overzicht van het dynamisch toewijzen van geheugen in de C-taal.

Voor het toewijzen van geheugen op de heap wordt de malloc()-functie uit de stdlib.h-bibliotheek gebruikt:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
sizeof+struct
Note
Opmerking

Wanneer geheugen dynamisch wordt toegewezen voor gebruik in het programma, blijft dat geheugen gereserveerd totdat het expliciet wordt vrijgegeven met 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; }

Als een structuur meerdere velden van verschillende gegevenstypen bevat, zal de compiler de grootte van de velden gelijkmaken zodat de structuur "handig" in het geheugen wordt opgeslagen.

Let na het voltooien van de taak op hoeveel bytes er worden toegewezen voor de structuur met de velden int en char. Dit fenomeen wordt later in deze cursus besproken.

Taak

Veeg om te beginnen met coderen

Je moet een Student-structuur aanmaken en dynamisch geheugen ervoor reserveren met de functie malloc().
Je taak is om de structuur te initialiseren met voorbeeldwaarden en een pointer ernaar terug te geven.

Binnen de functie createStudent:

  1. Gebruik malloc() om geheugen te reserveren voor één Student-structuur.
  2. Controleer of de toewijzing geslaagd is (zo niet, retourneer NULL).
  3. Ken een standaardnaam toe met sprintf() — bijvoorbeeld "Alice Johnson".
  4. Ken een waarde toe aan age, bijvoorbeeld 21.
  5. Ken een waarde toe aan gpa, bijvoorbeeld 3.85.
  6. Retourneer de pointer naar de gereserveerde structuur.

In de functie main:

  1. Gebruik de functie free() om het gereserveerde geheugen vrij te geven na gebruik.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 4
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt