Menu
Coddy logo textTech

구조체 멤버에 접근하기

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

이제 구조체 변수를 생성할 수 있게 되었으므로, 그 안에 저장된 데이터를 다루는 방법을 배워야 합니다. 점 연산자(.)는 구조체 변수의 개별 멤버에 접근하고 수정하는 핵심 도구입니다.

구조체 멤버에 접근하는 구문은 간단합니다:

structVariable.memberName

우리의 Point 구조체 예제를 사용하여 멤버의 값을 읽거나 쓸 수 있습니다:

struct Point p1;

// 구조체 멤버에 값 쓰기
p1.x = 10;
p1.y = 20;

// 구조체 멤버에서 값 읽기
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

점 연산자는 다른 변수에 접근하는 것과 똑같이 작동합니다. 이를 할당, 산술 연산, 함수 호출 또는 해당 유형의 일반 변수를 사용하는 모든 곳에서 사용할 수 있습니다. 각 멤버는 선언된 유형의 독립적인 변수처럼 동작하므로, 구조체의 데이터를 체계적이고 직관적인 방식으로 조작할 수 있습니다.

challenge icon

챌린지

쉬움

점(dot) 연산자를 사용하여 구조체 멤버에 접근하고 수정하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 다음 멤버를 포함하는 Car라는 이름의 struct를 정의합니다:
    • 제조 연도를 저장할 정수형 year
    • 자동차 브랜드를 저장할 크기 20의 문자 배열 brand
    • 현재 주행 거리를 저장할 정수형 mileage
    • 자동차 가격을 저장할 실수형 price
  2. myCar라는 이름의 Car 변수를 생성합니다.
  3. 다음 입력 값을 읽고 점 연산자를 사용하여 구조체 멤버에 할당합니다:
    • 연도를 나타내는 정수를 읽어 myCar.year에 할당합니다.
    • 브랜드를 나타내는 문자열을 읽어 myCar.brand에 할당합니다.
    • 주행 거리를 나타내는 정수를 읽어 myCar.mileage에 할당합니다.
    • 가격표를 나타내는 실수를 읽어 myCar.price에 할당합니다.
  4. 모든 값을 읽은 후, 다음 작업을 수행합니다:
    • myCar.mileage += 1000;를 사용하여 주행 거리를 1000만큼 증가시킵니다.
    • myCar.price -= 500.0;를 사용하여 가격을 500.0만큼 감소시킵니다.
  5. 점 연산자를 사용하여 각 멤버에 접근하고 다음 형식을 정확히 지켜 자동차 정보를 출력합니다:
    • Car Details:
    • Year: [year]
    • Brand: [brand]
    • Mileage: [mileage]
    • Price: [price]

이 챌린지는 구조체 멤버를 읽고 쓰는 데 사용되는 점 연산자에 대한 이해도를 테스트합니다. 구조체 멤버에 값을 할당하고, 산술 연산을 수행하며, 출력을 위해 멤버에 접근하는 연습을 하게 됩니다.

예를 들어, 입력이 다음과 같다면:

2020
Toyota
50000
25000.50

출력은 다음과 같아야 합니다:

Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50

치트 시트

점 연산자(.)는 구조체 변수의 개별 멤버에 접근하고 수정하는 데 사용됩니다.

구조체 멤버에 접근하기 위한 구문:

structVariable.memberName

구조체 멤버를 읽고 쓰는 예시:

struct Point p1;

// 구조체 멤버에 쓰기
p1.x = 10;
p1.y = 20;

// 구조체 멤버에서 읽기
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

점 연산자는 할당, 산술 연산, 함수 호출 또는 해당 타입의 일반 변수를 사용하는 모든 곳에서 사용할 수 있습니다. 각 멤버는 선언된 타입의 독립적인 변수처럼 동작합니다.

직접 해보기

#include <stdio.h>
#include <string.h>

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

int main() {
    // TODO: myCar라는 이름의 Car 변수를 생성하세요
    
    // 입력 값 읽기
    int year;
    char brand[20];
    int mileage;
    float price;
    
    scanf("%d", &year);
    scanf("%s", brand);
    scanf("%d", &mileage);
    scanf("%f", &price);
    
    // TODO: 점(.) 연산자를 사용하여 입력 값을 구조체 멤버에 할당하세요
    
    // TODO: 지정된 대로 주행 거리와 가격을 수정하세요
    
    // TODO: 점(.) 연산자를 사용하여 자동차 상세 정보를 출력하세요
    printf("Car Details:\n");
    // 여기에 연식(Year), 브랜드(Brand), 주행 거리(Mileage), 가격(Price)을 출력하세요
    
    return 0;
}
quiz icon실력 점검

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

Logic & Flow의 모든 레슨