함수와 스코프: 값 복사, 수명, 재귀
함수 인자는 복사되어 전달됩니다. 지역 변수와 전역 변수의 수명, 그리고 MCU에서 재귀를 피하는 이유.
값에 의한 전달
C 함수는 인자의 복사본을 받습니다. 함수 안에서 인자를 바꿔도 호출한 쪽 변수는 그대로입니다. 바깥 값을 바꾸고 싶다면 주소를 넘깁니다. 이것이 포인터를 배워야 하는 첫 번째 이유입니다.
변수의 수명
| 종류 | 어디에 | 언제까지 |
|---|---|---|
| 지역 변수 | 스택 | 함수가 끝나면 사라짐 |
| 전역 변수 | .data / .bss | 프로그램 끝까지 |
| static 지역 변수 | .data / .bss | 프로그램 끝까지, 이름은 함수 안에서만 |
지역 변수의 주소를 반환하면 함수가 끝난 뒤 그 메모리는 다른 함수가 덮어씁니다. 컴파일은 되지만 가장 찾기 어려운 버그 중 하나입니다.
재귀를 피하는 이유
함수를 부를 때마다 스택이 쌓입니다. RAM이 수 KB인 MCU에서 깊이를 예측할 수 없는 재귀는 스택 넘침으로 이어지고, 증상은 엉뚱한 변수 값이나 하드폴트로 나타납니다. 임베디드 코딩 규칙 대부분이 재귀를 금지합니다.
영상으로 이어 보기공부법과 진로 시리즈 15편2025 임베디드 프로그래밍 공부 순서 | 공부 방법 | 로드맵PROJECT COURSEC 문법을 실제 펌웨어 코드로 써 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →