Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C-Structs: Übergeben, Zurückgeben & Referenz-Handling meistern

C-Strukturen: Übergeben, Zurückgeben und Referenz-Handling

In der C-Programmierung ermöglichen Strukturen das Gruppieren zusammengehöriger Daten zu einer einzelnen Entität. Dieser Leitfaden führt Sie durch drei wesentliche Operationen mit Structs: Übergeben an Funktionen, Zurückgeben aus Funktionen und Manipulation per Referenz. Jeder Abschnitt enthält eine prägnante Erklärung und ein funktionierendes Beispiel zum Festigen Ihres Verständnisses.


Structs an Funktionen übergeben

Genau wie eingebaute Typen können Struct-Variablen direkt an eine Funktion übergeben werden. Bevor Sie eintauchen, ist es hilfreich, C-Strukturen, C-Funktionen und benutzerdefinierte Funktionen zu wiederholen.

Das folgende Beispiel zeigt, wie man einen struct student an eine Funktion übergibt, die seinen Inhalt ausgibt.

#include <stdio.h>
struct student {
    char name[50];
    int age;
};
// Funktionsprototyp
void display(struct student s);
int main() {
    struct student s1;
    printf("Enter name: ");
    scanf("%[^ ]%*c", s1.name); // bis Newline einlesen
    printf("Enter age: ");
    scanf("%d", &s1.age);
    display(s1); // Struct an Funktion übergeben
    return 0;
}
void display(struct student s) {
    printf("\nDisplaying information\n");
    printf("Name: %s", s.name);
    printf("\nAge: %d", s.age);
}

Ausgabe

Enter name: Bond
Enter age: 13
Displaying information
Name: Bond
Age: 13

Struct aus einer Funktion zurückgeben

Funktionen können ganze Structs zurückgeben, was eine saubere Trennung von Datenerfassung und -verarbeitung ermöglicht. Das folgende Beispiel sammelt Studenteninformationen innerhalb einer Funktion und gibt sie an main zurück.

#include <stdio.h>
struct student {
    char name[50];
    int age;
};
// Funktionsprototyp
struct student getInformation();
int main() {
    struct student s;
    s = getInformation();
    printf("\nDisplaying information\n");
    printf("Name: %s", s.name);
    printf("\nAge: %d", s.age);
    return 0;
}
struct student getInformation() {
    struct student s1;
    printf("Enter name: ");
    scanf("%[^ ]%*c", s1.name);
    printf("Enter age: ");
    scanf("%d", &s1.age);
    return s1;
}

Der Rückgabetyp der Funktion stimmt mit dem Struct überein, das sie zurückgibt, was Typsicherheit und Klarheit gewährleistet.


Struct per Referenz übergeben

Wenn eine Funktion ein Struct modifizieren soll, übergeben Sie seine Adresse (also einen Zeiger). Dies ist analog zum Übergeben eingebauter Typen per Referenz. Das folgende Beispiel addiert zwei komplexe Zahlen und speichert das Ergebnis über einen Zeiger.

#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("For first number,\n");
    printf("Enter real part: ");
    scanf("%f", &c1.real);
    printf("Enter imaginary part: ");
    scanf("%f", &c1.imag);
    printf("For second number,\n");
    printf("Enter real part: ");
    scanf("%f", &c2.real);
    printf("Enter imaginary part: ");
    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;
}

Ausgabe

For first number,
Enter real part: 1.1
Enter imaginary part: -2.4
For second number,
Enter real part: 3.4
Enter imaginary part: -3.2
result.real = 4.5
result.imag = -5.6

Da result per Referenz übergeben wird, wirken sich alle Änderungen innerhalb von addNumbers sofort auf die Variable in main aus.


Durch die Beherrschung dieser Techniken können Sie modulareren, lesbareren und effizienteren C-Code schreiben, der die volle Kraft von Strukturen nutzt.

C Sprache

  1. C#-Structs verstehen: Definition, Verwendung und wesentliche Unterschiede
  2. C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
  3. C-Structs meistern: Definition, Variablen, Zugriff & fortgeschrittene Beispiele
  4. C-Structs und Zeiger meistern: Praxisleitfaden
  5. C-Programmstruktur verstehen: Einsteiger-Guide
  6. C-Datentypen verstehen: Umfassender Leitfaden
  7. C-Konstanten und Literale: Typen, Verwendung & Best Practices
  8. C-Funktionen meistern: Struktur, Deklaration & Best Practices
  9. C++ Overloading: Funktionen & Operatoren erklärt
  10. Elektrische Transformatoren: Funktion, Aufbau & industrielle Anwendungen