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 Structs: Doorgeven, retourneren en referentie-afhandeling onder de knie krijgen

C Structuren: Doorgeven, retourneren en referentie-afhandeling

In C-programmeren stellen structuren je in staat gerelateerde data in één entiteit te groeperen. Deze gids begeleidt je door drie essentiële operaties met structs: ze doorgeven aan functies, ze retourneren uit functies, en ze per referentie manipuleren. Elke sectie bevat een beknopte uitleg en een werkend voorbeeld om je begrip te versterken.


Structs doorgeven aan functies

Net als ingebouwde typen kunnen struct-variabelen direct aan een functie worden doorgegeven. Het is handig om eerst C structuren, C functies en user-defined functions te herhalen.

  • C structuren
  • C functies
  • User-defined Function

Het volgende voorbeeld demonstreert hoe je een struct student doorgeeft aan een functie die de inhoud print.

#include <stdio.h>
struct student {
    char name[50];
    int age;
};
// Functieprototype
void display(struct student s);
int main() {
    struct student s1;
    printf("Voer naam in: ");
    scanf("%[^ ]%%*c", s1.name); // lees tot newline
    printf("Voer leeftijd in: ");
    scanf("%d", &s1.age);
    display(s1); // geef struct door aan functie
    return 0;
}
void display(struct student s) {
    printf("\nInformatie weergeven\n");
    printf("Naam: %s", s.name);
    printf("\nLeeftijd: %d", s.age);
}

Output

Voer naam in: Bond
Voer leeftijd in: 13
Informatie weergeven
Naam: Bond
Leeftijd: 13

Een struct retourneren uit een functie

Functies kunnen volledige structs retourneren, wat een schone scheiding van dataverzameling en -verwerking mogelijk maakt. Het onderstaande voorbeeld verzamelt studentinformatie binnen een functie en retourneert het aan main.

#include <stdio.h>
struct student {
    char name[50];
    int age;
};
// Functieprototype
struct student getInformation();
int main() {
    struct student s;
    s = getInformation();
    printf("\nInformatie weergeven\n");
    printf("Naam: %s", s.name);
    printf("\nLeeftijd: %d", s.age);
    return 0;
}
struct student getInformation() {
    struct student s1;
    printf("Voer naam in: ");
    scanf("%[^ ]%%*c", s1.name);
    printf("Voer leeftijd in: ");
    scanf("%d", &s1.age);
    return s1;
}

Het return-type van de functie matcht de struct die het retourneert, wat type-veiligheid en helderheid garandeert.


Een struct per referentie doorgeven

Als je een functie nodig hebt die een struct wijzigt, geef dan het adres (d.w.z. een pointer) door. Dit is analoog aan het per referentie doorgeven van ingebouwde typen. Het volgende voorbeeld telt twee complexe getallen op en slaat het resultaat op via een pointer.

#include <stdio.h>
typedef struct Complex {
    float real;
    float imag;
} complex;
void addNumbers(complex c1, complex c2, complex *result);
int main() {
    complex c1, c2, result;
    printf("Voor eerste getal,\n");
    printf("Voer reëel deel in: ");
    scanf("%f", &c1.real);
    printf("Voer imaginair deel in: ");
    scanf("%f", &c1.imag);
    printf("Voor tweede getal,\n");
    printf("Voer reëel deel in: ");
    scanf("%f", &c2.real);
    printf("Voer imaginair deel in: ");
    scanf("%f", &c2.imag);
    addNumbers(c1, c2, &result);
    printf("\nresult.real = %.1f\n", result.real);
    printf("result.imag = %.1f", result.imag);
    return 0;
}
void addNumbers(complex c1, complex c2, complex *result) {
    result->real = c1.real + c2.real;
    result->imag = c1.imag + c2.imag;
}

Output

Voor eerste getal,
Voer reëel deel in: 1.1
Voer imaginair deel in: -2.4
Voor tweede getal,
Voer reëel deel in: 3.4
Voer imaginair deel in: -3.2
result.real = 4.5
result.imag = -5.6

Omdat result per referentie wordt doorgegeven, beïnvloeden wijzigingen binnen addNumbers direct de variabele in main.


Door deze technieken onder de knie te krijgen, kun je meer modulare, leesbare en efficiënte C-code schrijven die de volle kracht van structuren benut.

C Taal

  1. Elektrische Transformatoren Uitgelegd: Functie, Ontwerp en Industriële Toepassingen
  2. De 15 Belangrijkste Onderdelen van een Draaibank en Hun Functies
  3. C# structs: definitie, gebruik en verschillen met classes
  4. C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
  5. C Structs onder de knie krijgen: Definitie, variabelen, toegang & geavanceerde voorbeelden
  6. C Structs en Pointers onder de knie krijgen: Een praktische gids
  7. C-programmastructuur begrijpen: Een beginnergids
  8. C-datatypes begrijpen: Een complete gids
  9. C-constanten en literals: Types, gebruik en best practices
  10. C-functies: Structuur, declaratie, aanroep en argumenten
  11. C++ Overloading Beheersen: Functies & Operators Uitgelegd