구조 값이 한 기능에서 다른 기능으로 전송되는 세 가지 방법이 있습니다. 다음과 같습니다 -
-
개별 멤버를 함수에 대한 인수로 전달합니다.
-
전체 구조를 함수에 대한 인수로 전달합니다.
-
구조체의 주소를 함수에 대한 인수로 전달합니다.
이제 전체 구조를 함수에 대한 인수로 전달하는 방법을 살펴보겠습니다.
-
구조체 변수의 이름은 함수 호출 시 인자로 주어집니다.
-
함수 헤더의 다른 구조체 변수에 수집됩니다.
-
단점은 메모리 낭비로 전체 구조의 복사본이 다시 생성된다는 것입니다.
예시
다음 프로그램은 전체 구조를 함수에 대한 인수로 전달하는 방법을 보여줍니다.
#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);
} 출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
enter the day, month and year:18 JAN 2021 day=18 month=JAN year=2021
예시 2
전체 구조를 함수에 대한 인수로 전달하는 것을 설명하는 C 프로그램이 설명된 또 다른 예를 고려하십시오.
#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);
} 출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
Enter variable 1 = 20 Enter variable 2 = 50 Added value is 70
예시 3
전체 구조를 함수에 대한 인수로 전달하는 것을 보여주는 또 다른 C 프로그램이 여기에 제공되어 구조 선언, 함수 선언 및 반환 등을 설명합니다.
#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);
} 출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
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