구조체 멤버에 접근하기
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);점 연산자는 다른 변수에 접근하는 것과 똑같이 작동합니다. 이를 할당, 산술 연산, 함수 호출 또는 해당 유형의 일반 변수를 사용하는 모든 곳에서 사용할 수 있습니다. 각 멤버는 선언된 유형의 독립적인 변수처럼 동작하므로, 구조체의 데이터를 체계적이고 직관적인 방식으로 조작할 수 있습니다.
챌린지
쉬움점(dot) 연산자를 사용하여 구조체 멤버에 접근하고 수정하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 다음 멤버를 포함하는
Car라는 이름의struct를 정의합니다:- 제조 연도를 저장할 정수형
year - 자동차 브랜드를 저장할 크기 20의 문자 배열
brand - 현재 주행 거리를 저장할 정수형
mileage - 자동차 가격을 저장할 실수형
price
- 제조 연도를 저장할 정수형
myCar라는 이름의Car변수를 생성합니다.- 다음 입력 값을 읽고 점 연산자를 사용하여 구조체 멤버에 할당합니다:
- 연도를 나타내는 정수를 읽어
myCar.year에 할당합니다. - 브랜드를 나타내는 문자열을 읽어
myCar.brand에 할당합니다. - 주행 거리를 나타내는 정수를 읽어
myCar.mileage에 할당합니다. - 가격표를 나타내는 실수를 읽어
myCar.price에 할당합니다.
- 연도를 나타내는 정수를 읽어
- 모든 값을 읽은 후, 다음 작업을 수행합니다:
myCar.mileage += 1000;를 사용하여 주행 거리를 1000만큼 증가시킵니다.myCar.price -= 500.0;를 사용하여 가격을 500.0만큼 감소시킵니다.
- 점 연산자를 사용하여 각 멤버에 접근하고 다음 형식을 정확히 지켜 자동차 정보를 출력합니다:
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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.