Menu
Coddy logo textTech

구조체 초기화하기

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 42번째.

구조체 변수를 생성한 다음 멤버에 개별적으로 값을 할당할 수도 있지만, C 언어는 초기값을 설정하는 더 편리한 방법을 제공합니다. 중괄호로 둘러싸인 초기화 리스트(initializer list)를 사용하여 선언 시점에 구조체 변수를 초기화할 수 있습니다.

구조체 초기화 구문은 다음과 같습니다:

struct StructureName variableName = {value1, value2, ...};

우리의 Point 구조체 예제를 사용하여, 다음과 같이 한 줄로 깔끔하게 선언하고 초기화할 수 있습니다:

struct Point p1 = {10, 20};

이것은 x가 10으로, y가 20으로 설정된 p1이라는 이름의 Point 변수를 생성합니다. 초기화 리스트의 값들은 구조체 정의에서 선언된 순서대로 구조체 멤버에 할당됩니다.

이러한 초기화 방식은 개별적인 할당보다 더 간결할 뿐만 아니라, 구조체가 무작위 가비지 데이터 대신 의미 있는 값으로 시작되도록 보장합니다. 이는 컴파일 타임에 초기 값을 알고 있고 즉시 사용 가능한 구조체 변수를 효율적으로 생성하고자 할 때 특히 유용합니다.

challenge icon

챌린지

쉬움

초기화 리스트를 사용하여 구조체 초기화를 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 다음 멤버를 포함하는 Employee라는 이름의 struct를 정의합니다:
    • 직원 ID를 저장할 정수형 id
    • 부서 이름을 저장할 크기 15의 문자 배열 department
    • 근속 연수를 저장할 정수형 yearsOfService
    • 직원의 급여를 저장할 실수형 salary
  2. 초기화 리스트를 사용하여 다음 데이터를 가진 세 개의 Employee 변수를 생성합니다:
    • emp1: ID 101, 부서 "Engineering", 근속 연수 5년, 급여 75000.50
    • emp2: ID 102, 부서 "Marketing", 근속 연수 3년, 급여 65000.25
    • emp3: ID 103, 부서 "Sales", 근속 연수 8년, 급여 80000.75
  3. 각 직원의 정보를 다음 형식으로 정확히 출력합니다:
    • Employee 1:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 2:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 3:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
  4. 세 명의 모든 직원의 총 급여를 다음 형식으로 계산하고 출력합니다: Total Salary: [total]
  5. 평균 근속 연수를 다음 형식으로 계산하고 출력합니다: Average Years of Service: [average]

이 챌린지는 구조체 변수를 한 줄에서 선언하고 초기화하는 초기화 리스트를 사용한 구조체 초기화에 대한 이해를 테스트합니다. 초기화 리스트의 값은 구조체 정의에서 멤버가 선언된 순서와 동일하게 제공되어야 합니다.

예상 출력 결과는 다음과 같아야 합니다:

Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33

치트 시트

선언 시점에 중괄호로 감싸인 초기화 리스트(initializer list)를 사용하여 구조체 변수를 초기화할 수 있습니다:

struct StructureName variableName = {value1, value2, ...};

Point 구조체를 사용한 예시:

struct Point p1 = {10, 20};

초기화 리스트의 값들은 구조체 정의에 선언된 순서대로 구조체 멤버에 할당됩니다. 이 방식은 개별적인 할당보다 더 간결하며, 구조체가 임의의 쓰레기 데이터 대신 의미 있는 값으로 시작되도록 보장합니다.

직접 해보기

#include <stdio.h>

// TODO: 여기에 Employee 구조체를 정의하세요

int main() {
    // TODO: 초기화 리스트를 사용하여 세 개의 Employee 변수를 생성하세요
    
    // TODO: 각 직원의 정보를 출력하세요
    
    // TODO: 총 급여와 평균 근속 연수를 계산하고 출력하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨