구조체 초기화하기
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 변수를 생성합니다. 초기화 리스트의 값들은 구조체 정의에서 선언된 순서대로 구조체 멤버에 할당됩니다.
이러한 초기화 방식은 개별적인 할당보다 더 간결할 뿐만 아니라, 구조체가 무작위 가비지 데이터 대신 의미 있는 값으로 시작되도록 보장합니다. 이는 컴파일 타임에 초기 값을 알고 있고 즉시 사용 가능한 구조체 변수를 효율적으로 생성하고자 할 때 특히 유용합니다.
챌린지
쉬움초기화 리스트를 사용하여 구조체 초기화를 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 다음 멤버를 포함하는
Employee라는 이름의struct를 정의합니다:- 직원 ID를 저장할 정수형
id - 부서 이름을 저장할 크기 15의 문자 배열
department - 근속 연수를 저장할 정수형
yearsOfService - 직원의 급여를 저장할 실수형
salary
- 직원 ID를 저장할 정수형
- 초기화 리스트를 사용하여 다음 데이터를 가진 세 개의
Employee변수를 생성합니다:emp1: ID 101, 부서 "Engineering", 근속 연수 5년, 급여 75000.50emp2: ID 102, 부서 "Marketing", 근속 연수 3년, 급여 65000.25emp3: ID 103, 부서 "Sales", 근속 연수 8년, 급여 80000.75
- 각 직원의 정보를 다음 형식으로 정확히 출력합니다:
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]
- 세 명의 모든 직원의 총 급여를 다음 형식으로 계산하고 출력합니다:
Total Salary: [total] - 평균 근속 연수를 다음 형식으로 계산하고 출력합니다:
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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.