기본 패턴
c
int value = 10;
int *ptr = &value;
*ptr = 20;설명
- 포인터는 값을 직접 담는 것이 아니라 어떤 값이 저장된 메모리 주소를 담습니다.
&value는 변수의 주소를 구하고,*ptr은 그 주소에 저장된 실제 값을 읽거나 씁니다.- 포인터를 쓰면 함수에서 원본 값을 수정하거나 동적 메모리와 배열을 다루기 쉬워집니다.
- 유효한 대상이 없는 포인터는
NULL로 초기화하는 편이 안전합니다.
짧은 예제
c
#include <stdio.h>
void add_bonus(int *score) {
*score += 5;
}
int main(void) {
int score = 90;
add_bonus(&score);
printf("score = %d\n", score);
return 0;
}빠른 정리
| 항목 | 설명 |
|---|---|
type *ptr | 포인터 선언 |
&value | 변수의 주소를 구함 |
*ptr | 포인터가 가리키는 값을 읽거나 씀 |
NULL | 아무 대상도 가리키지 않음 |
| 주소 전달 | 원본 데이터를 함수 안에서 수정 가능 |
주의할 점
초기화되지 않은 포인터를 역참조하면 심각한 오류가 납니다. 포인터는 항상 무엇을 가리키는지 먼저 분명히 해야 합니다.