Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Passing Custom Structures as Arguments | Function Arguments Specification
C++ Functions

book
Passing Custom Structures as Arguments

We can also pass structures (classes) as arguments of the function. We can do it the same as passing simple data type by using structure (class) name as a type specifier inside the function signature:

Like simple data types, we can pass custom structures (classes) by value, pointer, or reference.

cpp

passByValue

cpp

passByPointer

cpp

passByReference

copy
#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);
}
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); }

Note

There is another more comfortable way to access the attribute of the structure via pointer: we can use the -> operator instead of (*).. For example:

  • p->name instead of (*p).name;

  • p->age instead of (*p).age

Tehtävä

Swipe to start coding

Let's create a function to calculate the student's average grade based on his scores in different subjects and display their overall performance.

We had already done this task using a 2-dimensional static array before, but now we will do it with a custom structure.
Your task is to modify the code in the following way:

  • The function must get the student argument by reference.

  • Calculate the student's average score inside the function (variable averageScore)

  • Call the function and pass the created student1 value as an argument of the created function.

Ratkaisu

cpp

solution

#include <iostream>
#include <string>

// Define a custom structure for a student
struct Student {
std::string name;
int mathScore;
int physicsScore;
int chemistryScore;
};

// Function that calculates average grade and displays student's performance
double calculateAverageGrade(Student& student)
{
double averageScore = (student.mathScore + student.physicsScore + student.chemistryScore) / 3.0;
std::cout << "Student Name: " << student.name << std::endl;
std::cout << "Average Grade: " << averageScore << std::endl;

// Determine overall performance
if (averageScore >= 90)
std::cout << "Overall Performance: Excellent" << std::endl;
else if (averageScore >= 70)
std::cout << "Overall Performance: Good" << std::endl;
else
std::cout << "Overall Performance: Needs Improvement" << std::endl;
return averageScore;
}

int main() {
// Create a Student structure
Student student = {"Alice", 85, 92, 78};
// Call the function and pass the Student structure by reference
calculateAverageGrade(student);
}

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 7
#include <iostream>
#include <string>

// Define a custom structure for a student
struct Student {
std::string name;
int mathScore;
int physicsScore;
int chemistryScore;
};

// Function that calculates average grade and displays student's performance
double calculateAverageGrade(___ student)
{
double averageScore = (student.___ + ___.physicsScore + ___.___) / 3.0;
std::cout << "Student Name: " << student.name << std::endl;
std::cout << "Average Grade: " << averageScore << std::endl;

// Determine overall performance
if (averageScore >= 90)
std::cout << "Overall Performance: Excellent" << std::endl;
else if (averageScore >= 70)
std::cout << "Overall Performance: Good" << std::endl;
else
std::cout << "Overall Performance: Needs Improvement" << std::endl;
return averageScore;
}

int main() {
// Create a Student structure
Student student = {"Alice", 85, 92, 78};
// Call the function and pass the Student structure by reference
calculateAverageGrade(___);
}

Kysy tekoälyä

expand
ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

We use cookies to make your experience better!
some-alt