EP.4-2 구조체 포인터
Phase 4: Data Modeling & Struct
EP.4-2 구조체 포인터 — 화살표(->) 연산자
무거운 장비를 직접 옮기지 않고 "주소 리모컨"으로 원격 제어하기
1. 왜 구조체에 포인터를 쓰는가?
우리가 만든 Motor 구조체는 이름, 속도, 온도를 포함한 꽤 무거운 데이터 덩어리입니다. 함수를 호출할 때마다 이 덩어리를 통째로 복사하는 것은 시스템 자원을 낭비하는 일입니다.
하지만 구조체 포인터를 쓰면 단 몇 바이트의 '주소(리모컨)'만 전달하면 됩니다. 함수는 그 주소를 따라가서 실제 장비를 직접 점검하고 수정할 수 있게 되죠. 이것이 바로 고속 원격 제어의 핵심입니다.
구조체 포인터를 다룰 때 가장 중요한 도구는 화살표 연산자(->)입니다. ptr->speed는 "ptr이 가리키는 주소로 화살표 방향대로 따라가서(*), 거기 있는 speed 단자에 접속하라"는 직관적인 명령입니다.
2. ⚡ 실습: 원격 진단 유닛 가동
메인 공정의 모터 주소를 넘겨받아 상태를 점검하고 성능을 최적화하는 진단 시뮬레이션입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 장비 설계도
struct Motor {
char name[20];
int speed;
float temp;
};
// [진단 함수] 구조체 포인터(리모컨)를 매개변수로 받음
void checkMotor(struct Motor *p) {
printf("\n[진단 모드 가동]\n");
// 화살표 연산자로 내부 데이터 원격 접근
printf("진단 장비명: %s\n", p->name);
printf("현재 속도: %d RPM\n", p->speed);
// 원격으로 실시간 데이터 수정
p->speed += 100;
printf("최적화 완료: 속도를 100 RPM 상향 조정함\n");
}
int main() {
// 초기 장비 세팅
struct Motor m1 = {"Conveyor_01", 1200, 35.5};
printf("시작 전 속도: %d RPM\n", m1.speed);
// 장비의 '주소(&)'만 진단 유닛으로 전달
checkMotor(&m1);
printf("최종 반영 속도: %d RPM (메인 공정 동기화 완료)\n", m1.speed);
return 0;
}
구조체 변수에서 직접 접근할 때는 점(.)을, 포인터를 통해 접근할 때는 화살표(->)를 씁니다. 만약 (*p).speed라고 써도 동작은 같지만, 현장의 엔지니어들은 가독성과 직관성을 위해 화살표를 표준으로 사용합니다. 리모컨의 방향성을 잊지 마십시오!

댓글
댓글 쓰기