C Structure and Function
In this tutorial, we will learn to pass structure members as arguments to a function and to return struct from a function with the help of examples.
Passing structure to functions
- A Structure variables can be passed to a function and returned in a similar way as normal arguments.
- A structure can be passed to any function from main() function or from any sub function.
- Structure definition will be available within the function only.
- It won't be available to other functions unless it is passed to those functions by value or by address (reference).
Ways to pass structure
There are three ways to pass structures to a function in C programming :
- Passing structure to a function by value
- Passing structure to a function by address
- Without passing structure - by declare structure as global variable
Example : Passing structure to a function by value
#include <stdio.h>
#include <string.h>
struct studentData {
char name[20];
int id;
int age;
};
// function prototype
struct studentData getStudentData() {
struct studentData student1;
printf("Enter name : ");
scanf ("%s", student1.name);
printf("Enter Id : ");
scanf("%d", &student1.id);
printf("Enter age : ");
scanf("%d", &student1.age);
return student1;
}
int main() {
struct studentData s1;
s1 = getStudentData();
printf("Student1 Data\n");
printf("Name : %s\n", s1.name);
printf("Id : %d\n", s1.id);
printf("Age : %d\n", s1.age);
return 0;
}
Output
Enter name : Tony
Enter Id : 89
Enter age : 12
Student1 Data
Name : Tony
Id : 89
Age : 12
Here, we have passing the values of variable student1 to main function.
Example : Passing structure to a function by address
#include <stdio.h>
#include <string.h>
struct studentData {
char name[20];
int id;
int age;
};
// function prototype
void func(struct studentData *Student1) {
printf("Name : %s\n", Student1->name);
printf("ID : %d\n", Student1->id);
printf("Age : %d\n", Student1->age);
}
int main() {
struct studentData Student1;
strcpy(Student1.name, "Rabbit");
Student1.id = 23;
Student1.age = 16;
func(&Student1);
return 0;
}
Output
Name : Rabbit
ID : 23
Age : 16
Here, we have pass the address of the variable Student1 to the function struct studentData *student1 and access these values using -> arrow operator.
Example : By declaring a structure variable as Global variable
#include <stdio.h>
#include <string.h>
struct studentData {
char name[20];
int id;
int age;
};
struct studentData Student1;
// function prototype
void printData() {
printf("Name : %s\n", Student1.name);
printf("ID : %d\n", Student1.id);
printf("Age : %d\n", Student1.age);
}
int main() {
strcpy(Student1.name, "Steve");
Student1.id = 11;
Student1.age = 7;
printData();
return 0;
}
Output
Name : Steve
ID : 11
Age : 7
Here, we have declare Student1 variable as global variable.
Note : It is not required to pass the structure to function, when we declare the structure variable as global variable.
Next Tutorial
We hope that this tutorial helped you develop better understanding of the concept of Struct & Functions in C.
Keep Learning : )
In the next tutorial, you'll learn about C Unions
.