Herausforderung: Übergabe Benutzerdefinierter Strukturen als Argumente
Wir können auch Strukturen (Klassen) als Argumente einer Funktion übergeben. Dies erfolgt analog zur Übergabe einfacher Datentypen, indem der Struktur- (Klassen-) Name als Typspezifizierer in der Funktionssignatur verwendet wird:
Wie bei einfachen Datentypen können benutzerdefinierte Strukturen (Klassen) als Wert, Zeiger oder Referenz übergeben werden.
passByValue.cpp
passByPointer.cpp
passByReference.cpp
1234567891011121314151617181920212223#include <iostream> #include <string> // Define a custom structure struct Person { std::string name; int age; }; // Function that takes a Person structure by value void displayPersonInfo(Person p) { std::cout << "Name: " << p.name << ", Age: " << p.age << std::endl; } int main() { // Create a Person structure Person person1 = {"Alice", 30}; // Call the function and pass the Person structure by value displayPersonInfo(person1); }
Hinweis
Es gibt eine weitere, komfortablere Möglichkeit, auf das Attribut einer Struktur über einen Zeiger zuzugreifen: Wir können den Operator
->anstelle von(*).verwenden. Zum Beispiel:
p->nameanstelle von(*p).name;p->ageanstelle von(*p).age
Swipe to start coding
Sie haben eine:n Schüler:in mit Noten in 3 Fächern. Ihre Aufgabe ist es, die Durchschnittsnote des/der Schüler:in zu berechnen.
- Die Funktion
calculateAverageGradeerhält eineStudent-Struktur per Referenz, die den Namen sowie die Noten in Mathematik, Physik und Chemie enthält. - Addieren Sie innerhalb von
calculateAverageGradedie drei Fachnoten und weisen Sie das Ergebnis der VariablenaverageScorezu (mathScore,physicsScore,chemistryScore). - Teilen Sie
averageScoredurch 3.0, um die Durchschnittsnote alsdoublezu erhalten. - Bestimmen Sie die Gesamtleistung:
- Wenn
averageScore >= 90, geben Sie"Overall Performance: Excellent"aus. - Wenn
averageScore >= 70, geben Sie"Overall Performance: Good"aus. - Andernfalls geben Sie
"Overall Performance: Needs Improvement"aus.
- Wenn
Lösung
solution.cpp
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how passing by value, pointer, and reference works with structures?
Can you provide an example of a function that takes a structure as an argument?
What is the difference between using the `->` operator and the `.` operator with structures?
Awesome!
Completion rate improved to 5
Herausforderung: Übergabe Benutzerdefinierter Strukturen als Argumente
Swipe um das Menü anzuzeigen
Wir können auch Strukturen (Klassen) als Argumente einer Funktion übergeben. Dies erfolgt analog zur Übergabe einfacher Datentypen, indem der Struktur- (Klassen-) Name als Typspezifizierer in der Funktionssignatur verwendet wird:
Wie bei einfachen Datentypen können benutzerdefinierte Strukturen (Klassen) als Wert, Zeiger oder Referenz übergeben werden.
passByValue.cpp
passByPointer.cpp
passByReference.cpp
1234567891011121314151617181920212223#include <iostream> #include <string> // Define a custom structure struct Person { std::string name; int age; }; // Function that takes a Person structure by value void displayPersonInfo(Person p) { std::cout << "Name: " << p.name << ", Age: " << p.age << std::endl; } int main() { // Create a Person structure Person person1 = {"Alice", 30}; // Call the function and pass the Person structure by value displayPersonInfo(person1); }
Hinweis
Es gibt eine weitere, komfortablere Möglichkeit, auf das Attribut einer Struktur über einen Zeiger zuzugreifen: Wir können den Operator
->anstelle von(*).verwenden. Zum Beispiel:
p->nameanstelle von(*p).name;p->ageanstelle von(*p).age
Swipe to start coding
Sie haben eine:n Schüler:in mit Noten in 3 Fächern. Ihre Aufgabe ist es, die Durchschnittsnote des/der Schüler:in zu berechnen.
- Die Funktion
calculateAverageGradeerhält eineStudent-Struktur per Referenz, die den Namen sowie die Noten in Mathematik, Physik und Chemie enthält. - Addieren Sie innerhalb von
calculateAverageGradedie drei Fachnoten und weisen Sie das Ergebnis der VariablenaverageScorezu (mathScore,physicsScore,chemistryScore). - Teilen Sie
averageScoredurch 3.0, um die Durchschnittsnote alsdoublezu erhalten. - Bestimmen Sie die Gesamtleistung:
- Wenn
averageScore >= 90, geben Sie"Overall Performance: Excellent"aus. - Wenn
averageScore >= 70, geben Sie"Overall Performance: Good"aus. - Andernfalls geben Sie
"Overall Performance: Needs Improvement"aus.
- Wenn
Lösung
solution.cpp
Danke für Ihr Feedback!
single