Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C-structuren: Complexe data efficiënt organiseren

Wat is een structuur?

structuur (struct) is een door de gebruiker gedefinieerd datatype dat variabelen van verschillende typen gegroepeerd onder één naam. Ideaal voor records (bijv. boek, werknemer, punt).

Definiëren van een struct

struct Boek {
    char titel[50];
    char auteur[50];
    char onderwerp[100];
    int boek_id;
};

Optioneel: variabelen direct declareren na }. Meestal apart declareren.

Struct-variabelen declareren

struct Boek boek1, boek2;

Of met typedef (zie apart artikel): typedef struct Boek Boek; Boek boek1;

Leden benaderen

Via lidtoegangsoperator . (punt).

strcpy(boek1.titel, "C Programmeren");
strcpy(boek1.auteur, "Nuha Ali");
boek1.boek_id = 6495407;

Volledig voorbeeld

#include <stdio.h>
#include <string.h>

struct Boek {
    char titel[50];
    char auteur[50];
    char onderwerp[100];
    int boek_id;
};

void printBoek(struct Boek b) {
    printf("Titel: %s\n", b.titel);
    printf("Auteur: %s\n", b.auteur);
    printf("Onderwerp: %s\n", b.onderwerp);
    printf("ID: %d\n", b.boek_id);
}

int main() {
    struct Boek boek1, boek2;

    strcpy(boek1.titel, "C Programmeren");
    strcpy(boek1.auteur, "Nuha Ali");
    strcpy(boek1.onderwerp, "C Tutorial");
    boek1.boek_id = 6495407;

    strcpy(boek2.titel, "Telecom Facturatie");
    strcpy(boek2.auteur, "Zara Ali");
    strcpy(boek2.onderwerp, "Telecom Tutorial");
    boek2.boek_id = 6495700;

    printBoek(boek1);
    printBoek(boek2);
    return 0;
}

Structuren als functie-argumenten

  • By value – kopie wordt gemaakt (kan duur zijn bij grote structs)
  • By reference (pointer) – efficiënter, functie kan wijzigen
void printBoekPtr(struct Boek *b) {
    printf("Titel: %s\n", b->titel);  // -> operator
}

Pointers naar structuren

struct Boek *ptr = &boek1;
ptr->titel;  // equivalent aan (*ptr).titel

Bitvelden (bit fields)

Bespaar geheugen door leden een bitsbreedte te geven.

struct gepakt {
    unsigned int vlag1 : 1;
    unsigned int vlag2 : 1;
    unsigned int type  : 4;   // 0-15
    unsigned int waarde: 9;   // 0-511
};

Compiler pakt zo compact mogelijk (max int-breedte). Nuttig voor vlaggen, hardware-registers, bestandsformaten.

Uitlijning en padding

Compiler voegt padding toe voor uitlijning (performance). Gebruik #pragma pack of attribuut __attribute__((packed)) (GCC/Clang) om te controleren. sizeof(struct) kan groter zijn dan som van leden.

C Taal

  1. Data-opslag Gerevolutioneerd: Next-Generation Magnetische Nanostructuren Met Onzichtbaarheidsmantels
  2. Top 17 programmeerboeken om uw coderingsvaardigheden in 2021 te verbeteren
  3. Onderdelen Verbeteren met 3D-Geprinte Roosterstructuren
  4. C++ Structuren vs Classes: Een praktische gids voor embedded-ontwikkelaars
  5. Semaphores in Nucleus RTOS: Utility Services & Datastructuren
  6. Boekrecensie: Digitaliseer of Sterf – Een blauwdruk voor IoT-gedreven transformatie
  7. Menselijkheid behouden in het tijdperk van disruptieve technologie
  8. C typedef: Code vereenvoudigen met eigen typenamen
  9. C++ Datastructuren: Efficiënte Programma's Bouwen met Arrays, Structs en Meer
  10. C# Structuren Begrijpen: Hoe Waardetypen te Definiëren en Gebruiken
  11. Java Data Structures: Kernklassen & Collections Framework Verkend