Course Content
C++ Functions
C++ Functions
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.
passByValue
passByPointer
passByReference
#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
Task
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.
Thanks for your feedback!
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.
passByValue
passByPointer
passByReference
#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
Task
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.
Thanks for your feedback!
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.
passByValue
passByPointer
passByReference
#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
Task
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.
Thanks for your feedback!
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.
passByValue
passByPointer
passByReference
#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
Task
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.