Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Strukturen an Funktionen Übergeben | Arbeiten mit Zeigern und Strukturen
C-Strukturen Meistern

bookStrukturen an Funktionen Übergeben

Funktionen können mit Strukturen genauso arbeiten wie mit regulären Variablen:

main.c

main.c

copy
123456789101112131415161718192021
#include <stdio.h> // structure definition typedef struct { char name[50]; } Person; // function to display information about a person void printPerson(Person p) { printf("Name: %s\n", p.name); } int main() { // creating a structure and initializing its values Person person1 = {"John"}; // call a function to display information about a person printPerson(person1); return 0; }

Damit eine Funktion mit einer Struktur "interagieren" kann, beispielsweise um die Felder einer bestehenden Struktur zu ändern, muss die Funktion einen Zeiger auf die Struktur akzeptieren:

main.c

main.c

copy
12345678910111213141516171819202122232425262728293031
#include <stdio.h> // structure definition typedef struct { char symbol; }Example; // function for changing the values of structure fields via a pointer void changePoint(Example* ptr, int newSymbol) { // check for NULL pointer if (ptr != NULL) { ptr->symbol = newSymbol; } } int main() { // create the Example structure and a pointer Example ptr1 = {'H'}; Example* ptr = &ptr1; printf("Old symbol: %c | %p\n", ptr1.symbol, &ptr1); // use function to change the field of structures changePoint(ptr, 'y'); printf("New symbol: %c | %p\n", ptr1.symbol, &ptr1); return 0; }

Strukturen können innerhalb von Funktionen erstellt werden, und solche Strukturen können auch außerhalb der Funktionen "existieren" (nicht lokal), wenn die Funktion einen Zeiger auf eine solche Struktur zurückgibt:

main.c

main.c

copy
1234567891011121314151617181920212223242526272829303132
#include <stdio.h> #include <stdlib.h> // structure definition typedef struct { int value; }Example; // function creates a structure with the given field Example* CreateStruct(int setVal) { Example* ptr = (Example*)malloc(sizeof(Example)); // check for successful memory allocation if (ptr != NULL) { ptr->value = setVal; } return ptr; } int main() { // use function to create structure Example* ptrToStruct = CreateStruct(23); printf("Value inside struct: %d", ptrToStruct->value); free(ptrToStruct); // free memory return 0; }
Aufgabe

Swipe to start coding

Sie verwalten ein kleines Team von drei Mitarbeitenden, wobei jede Person einen Stundenlohn und eine bestimmte Anzahl an gearbeiteten Stunden pro Woche hat.
Ihre Aufgabe ist es, das durchschnittliche Wochengehalt für das gesamte Team zu berechnen.

In der Funktion calculateWeeklySalary:

  1. Empfang einer Struktur vom Typ Employee als Parameter.
  2. Zugriff auf die Felder hourlyRate und hoursWorked.
  3. Multiplikation dieser Werte zur Berechnung des Wochengehalts für die jeweilige Person.
  4. Rückgabe des berechneten Gehalts als double.

In der Funktion calculateAverageSalary:

  1. Empfang von drei Employee-Strukturen als Parameter.
  2. Aufruf von calculateWeeklySalary() für jede Person, um deren Gesamtvergütung zu erhalten.
  3. Addition aller drei Gehälter.
  4. Division der Gesamtsumme durch 3.0, um das durchschnittliche Wochengehalt zu berechnen.
  5. Rückgabe dieses Durchschnitts als double.

Example

Employee NameHourly RateHours WorkedWeekly Salary
Alice Johnson22.540900.00
Bob Smith18.038684.00
Carol White25.0421050.00

Average Weekly Salary: 878.00

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

close

bookStrukturen an Funktionen Übergeben

Swipe um das Menü anzuzeigen

Funktionen können mit Strukturen genauso arbeiten wie mit regulären Variablen:

main.c

main.c

copy
123456789101112131415161718192021
#include <stdio.h> // structure definition typedef struct { char name[50]; } Person; // function to display information about a person void printPerson(Person p) { printf("Name: %s\n", p.name); } int main() { // creating a structure and initializing its values Person person1 = {"John"}; // call a function to display information about a person printPerson(person1); return 0; }

Damit eine Funktion mit einer Struktur "interagieren" kann, beispielsweise um die Felder einer bestehenden Struktur zu ändern, muss die Funktion einen Zeiger auf die Struktur akzeptieren:

main.c

main.c

copy
12345678910111213141516171819202122232425262728293031
#include <stdio.h> // structure definition typedef struct { char symbol; }Example; // function for changing the values of structure fields via a pointer void changePoint(Example* ptr, int newSymbol) { // check for NULL pointer if (ptr != NULL) { ptr->symbol = newSymbol; } } int main() { // create the Example structure and a pointer Example ptr1 = {'H'}; Example* ptr = &ptr1; printf("Old symbol: %c | %p\n", ptr1.symbol, &ptr1); // use function to change the field of structures changePoint(ptr, 'y'); printf("New symbol: %c | %p\n", ptr1.symbol, &ptr1); return 0; }

Strukturen können innerhalb von Funktionen erstellt werden, und solche Strukturen können auch außerhalb der Funktionen "existieren" (nicht lokal), wenn die Funktion einen Zeiger auf eine solche Struktur zurückgibt:

main.c

main.c

copy
1234567891011121314151617181920212223242526272829303132
#include <stdio.h> #include <stdlib.h> // structure definition typedef struct { int value; }Example; // function creates a structure with the given field Example* CreateStruct(int setVal) { Example* ptr = (Example*)malloc(sizeof(Example)); // check for successful memory allocation if (ptr != NULL) { ptr->value = setVal; } return ptr; } int main() { // use function to create structure Example* ptrToStruct = CreateStruct(23); printf("Value inside struct: %d", ptrToStruct->value); free(ptrToStruct); // free memory return 0; }
Aufgabe

Swipe to start coding

Sie verwalten ein kleines Team von drei Mitarbeitenden, wobei jede Person einen Stundenlohn und eine bestimmte Anzahl an gearbeiteten Stunden pro Woche hat.
Ihre Aufgabe ist es, das durchschnittliche Wochengehalt für das gesamte Team zu berechnen.

In der Funktion calculateWeeklySalary:

  1. Empfang einer Struktur vom Typ Employee als Parameter.
  2. Zugriff auf die Felder hourlyRate und hoursWorked.
  3. Multiplikation dieser Werte zur Berechnung des Wochengehalts für die jeweilige Person.
  4. Rückgabe des berechneten Gehalts als double.

In der Funktion calculateAverageSalary:

  1. Empfang von drei Employee-Strukturen als Parameter.
  2. Aufruf von calculateWeeklySalary() für jede Person, um deren Gesamtvergütung zu erhalten.
  3. Addition aller drei Gehälter.
  4. Division der Gesamtsumme durch 3.0, um das durchschnittliche Wochengehalt zu berechnen.
  5. Rückgabe dieses Durchschnitts als double.

Example

Employee NameHourly RateHours WorkedWeekly Salary
Alice Johnson22.540900.00
Bob Smith18.038684.00
Carol White25.0421050.00

Average Weekly Salary: 878.00

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
single

single

some-alt