In this lesson, you will learn how to pass structs to a function in C as a parameter, with an example to understand the topic better.
Passing struct to a function as an argument
In the lesson User Defined Functions in C, we learned how to pass an argument for any data type to a function. Structs are user-defined data types, and they are no exception. A struct can be passed to a function as an argument.
Example
Below, we define a student struct, which we will use to create an instant from the main function, then pass that instance to a function that prints out the struct element values.
#include <stdio.h>
// Student Struct
struct student {
char name[20];
int age;
char grade[1];
};
// function prototype
void PrintStruct(struct student student);
// function implementation
void PrintStruct(struct student student) {
printf("\nYou entered:\n");
printf("Name: %s", student.name);
printf("\nAge: %i", student.age);
printf("\nGrade: %s", student.grade);
}
// main function
int main() {
struct student s;
printf("Enter student name: ");
scanf("%[^\n]%*c", s.name);
printf("Enter student age: ");
scanf("%i", & s.age);
printf("Enter student grade: ");
scanf("%s", & s.grade);
PrintStruct(s); // Passint struct to function as a parameter
return 0;
}
Output
Enter student name: FredEnter student age: 24Enter student grade: BYou entered:Name: FredAge: 24Grade: B
Summary
- Structs can be passed to a function as arguments.
