Có ba cách mà các giá trị của cấu trúc có thể được chuyển từ chức năng này sang chức năng khác. Chúng như sau -
-
Chuyển các thành viên riêng lẻ làm đối số để hoạt động.
-
Chuyển toàn bộ cấu trúc làm đối số cho hàm.
-
Truyền địa chỉ của cấu trúc làm đối số cho hàm.
Bây giờ, hãy xem cách Chuyển toàn bộ cấu trúc làm đối số cho hàm.
-
Tên của biến cấu trúc được đưa ra dưới dạng đối số trong lệnh gọi hàm.
-
Nó được thu thập trong một biến cấu trúc khác trong tiêu đề hàm.
-
Điểm bất lợi là một bản sao của toàn bộ cấu trúc được tạo lại bằng cách lãng phí bộ nhớ.
Ví dụ
Chương trình sau đây chỉ ra cách chuyển toàn bộ cấu trúc làm đối số cho hàm.
#include<stdio.h> struct date{ int day; char month[10]; int year; }; int main(){ struct date d; printf("enter the day,month and year:"); scanf("%d%s%d",&d.day,d.month,&d.year); display(d);//passing entire structure as an argument to function return 0; } void display(struct date d){ printf("day=%d\n",d.day); printf("month=%s\n",d.month); printf("year=%d\n",d.year); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
enter the day, month and year:18 JAN 2021 day=18 month=JAN year=2021
Ví dụ 2
Hãy xem xét một ví dụ khác, trong đó, một chương trình C để chứng minh việc truyền toàn bộ cấu trúc làm đối số cho hàm được giải thích.
#include<stdio.h> //Declaring structure// struct add{ int var1; int var2; }a; //Declaring and returning Function// void show(struct add a){ //Declaring sum variable// int sum; //Arithmetic Operation// sum=a.var1+a.var2; //Printing O/p// printf("Added value is %d",sum); } void main(){ //Declaring structure// struct add a; //Reading User I/p// printf("Enter variable 1 = "); scanf("%d",&a.var1); printf("Enter variable 2 = "); scanf("%d",&a.var2); //Calling function// show(a); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter variable 1 = 20 Enter variable 2 = 50 Added value is 70
Ví dụ 3
Một chương trình C khác để chứng minh việc truyền toàn bộ cấu trúc làm đối số cho hàm được đưa ra kèm theo đây là chương trình giải thích cấu trúc khai báo, khai báo và trả về hàm, v.v.
#include<stdio.h> //Declaring structure// struct student{ int s1,s2,s3; }s[5]; //Declaring and returning Function// void addition(struct student s[]){ //Declaring sum variable and For loop variable// int i,sum; //Arithmetic Operation// for(i=1;i<4;i++){ sum=s[i].s1+s[i].s2+s[i].s3; printf("Student %d scored total of %d\n",i,sum); } } void main(){ //Declaring variable for For loop// int i; //Reading User I/p through For loop// for(i=1;i<4;i++){ printf("Enter marks for student %d in subject 1 = ",i); scanf("%d",&s[i].s1); printf("Enter marks for student %d in subject 2 = ",i); scanf("%d",&s[i].s2); printf("Enter marks for student %d in subject 3 = ",i); scanf("%d",&s[i].s3); } //Calling function// addition(s); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter marks for student 1 in subject 1 = 25 Enter marks for student 1 in subject 2 = 89 Enter marks for student 1 in subject 3 = 45 Enter marks for student 2 in subject 1 = 12 Enter marks for student 2 in subject 2 = 45 Enter marks for student 2 in subject 3 = 89 Enter marks for student 3 in subject 1 = 12 Enter marks for student 3 in subject 2 = 78 Enter marks for student 3 in subject 3 = 12 Student 1 scored total of 159 Student 2 scored total of 146 Student 3 scored total of 102