Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 구조체 전체를 함수 인자로 전달하는 방법


C 언어에서는 구조체(structure) 전체를 함수의 인자(argument)로 전달할 수 있습니다. 이는 값에 의한 전달(pass by value) 방식으로 동작하며, 다음과 같은 특징이 있습니다.

  • 함수를 호출할 때 구조체 변수의 이름을 그대로 인자로 전달합니다.

  • 함수 정의부(헤더)에서는 같은 구조체 타입의 또 다른 매개변수로 이 값을 받아 처리합니다.

단점

구조체 전체가 통째로 복사되기 때문에, 크기가 큰 구조체를 자주 전달하면 메모리 낭비와 성능 저하가 발생할 수 있습니다. 이러한 문제를 피하려면 구조체의 주소(포인터)를 전달하는 방식을 사용하는 것이 효율적입니다.

예제 프로그램

다음 프로그램은 두 개의 정수를 멤버로 가지는 구조체를 선언하고, 구조체 전체를 함수에 전달하여 두 값의 합을 출력하는 예제입니다.

#include<stdio.h>
// 구조체 선언 //
struct add {
   int var1;
   int var2;
}a;

// 함수 선언 및 정의 //
void show(struct add a) {
   // 합계를 저장할 변수 선언 //
   int sum;
   // 산술 연산 수행 //
   sum = a.var1 + a.var2;
   // 결과 출력 //
   printf("Added value is %d", sum);
}

void main() {
   // 구조체 변수 선언 //
   struct add a;
   // 사용자 입력 받기 //
   printf("Enter variable 1 = ");
   scanf("%d", &a.var1);
   printf("Enter variable 2 = ");
   scanf("%d", &a.var2);
   // 함수 호출 //
   show(a);
}

실행 결과

Enter variable 1 = 30
Enter variable 2 = 40
Added value is 70