EP.4-2 구조체 포인터

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라고 써도 동작은 같지만, 현장의 엔지니어들은 가독성과 직관성을 위해 화살표를 표준으로 사용합니다. 리모컨의 방향성을 잊지 마십시오!

© 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
"장비를 직접 발로 차는 시대는 갔다. 이제는 리모컨(Pointer)으로 정밀하게 타격하라."

댓글

이 블로그의 인기 게시물

EP.0 코딩의 첫걸음 — 전기를 어떻게 연결할 것인가?

EP.0-1 천공카드

EP.1-1트랜지스터