← Back to list

포인터를 정말 알기 쉽게 이해해보자

C 언어를 배울 때 가장 어려운 개념으로 선택되는 것이 바로 포인터(pointer) 라는 개념입니다.

Su Bak · 2026-03-07 10:43 · 0 claps · 2.9 min read paywalled
#programming #pointers #c-programming #software-development
Open on Medium ↗
Wiki topics: 💻 · Programming

포인터를 정말 알기 쉽게 이해해보자

C 언어를 배울 때 가장 어려운 개념으로 선택되는 것이 바로 포인터(pointer) 라는 개념입니다.

이번 글에선 포인터를 쉽게! 간단하게! 설명해보려 합니다.

사진: Unsplash의Nikolay Loubet

사진: Unsplash의Nikolay Loubet

변수를 선언할 때 데이터 형식을 지정해 주게 됩니다. 정수는 int, 실수는 double 이렇게 말이죠. 포인터도 이와 같습니다.

포인터(pointer)는 int, double 처럼 데이터 형식 중 하나라고 생각하면 됩니다.

무슨 말인지 잘 이해가 되지 않을 수 있습니다. 먼저 일반적인 변수 선언을 예시로 들어보겠습니다.

int age = 20;

위와 같이 변수를 정의하면 int 형식에 값 20이 들어간다는 의미입니다.

char grade = 'a';

위와 같이 정의하면 char 형식에 값 ‘a’ 가 들어간다는 의미입니다.

int, char 형식의 변수처럼 포인터 변수를 정의하면 값으로 메모리 주소가 들어가는 것 뿐입니다.

좀 더 자세히 알아볼까요?

앞서 int age = 20; 라고 정의를 했었습니다. 이러면 20이란 값이 실제 메모리에 저장이 되어있게 되는데 age 변수는 20이 저장되어 있는 메모리 주소를 가리키고 있게 됩니다.

그래서 직접 메모리 주소를 지정하지 않고 printf(“%d”, age); 라고만 사용해도 age 가 실제 값 20이 들어있는 메모리 주소를 가리키고 있어서 바로 값을 가져오는 것이 가능합니다.

정말 age 변수가 메모리 주소를 가리키고 있는 걸까요? 이를 출력해보고 싶다면 & 연산자를 사용하면 됩니다.

int age = 20;
printf("%p", &age); /* 0x0ff46200 */

출력된 메모리 주소는 다르겠지만 age 변수가 메모리 주소를 가리키고 있다는 것이 확인되었습니다.

자, 이제 포인터 변수를 선언해 보겠습니다.

int age = 10;

위처럼 정의하면 int 형식 변수 age10 이라는 int 형식 값이 들어가는데요. 포인터 변수는 변수에 *를 붙여주면 포인터 변수가 됩니다.

int age = 10;
int *pAge = &age; // 포인터 변수

이렇게 정의하면 *pAge 포인터 변수에 age 변수가 가리키는 메모리 주소가 들어가게 되는 겁니다.

int age = 10;
printf("%p", &age); /* 0x53cd1400*/

int *pAge = &age;
printf("%p", pAge); /* 0x53cd1400*/

어떤가요? age 변수가 가리키는 메모리 주소와 pAge 포인터 변수가 가리키는 메모리 주소가 같은 것을 확인할 수 있습니다.

이제 포인터가 메모리 주소를 참조한다는 것을 알았습니다. 그러면 메모리 주소에 있는 실제 값을 가져올려면 어떻게 해야할까요?

이처럼 주소를 통해 실제 값에 접근하는 것역참조라고 합니다.

printf("%d", *pAge); /* 10 */

포인터 변수에 *를 사용하면 pAge 변수가 참조하고 있던 메모리 주소(예시: 0x53cd1400)에 접근하여 해당 메모리 주소가 저장하고 있던 값 10에 접근하게 됩니다.

그래서 printf(“%d”, *pAge); 실행하면 10이 출력되는 것이죠.

int age = 10;
printf("%d", age); /* 10 */
printf("%p", &age); /* 0x53cd1400*/
printf("%d", *&age); /* 10 */

어떤가요? 포인터란 결국 int(정수), char(문자), double(실수) 처럼 메모리 주소라는 형식이 저장되는 것 뿐입니다.


메타데이터
post_id
7ce47e02baef
slug
포인터를-정말-알기-쉽게-이해해보자-7ce47e02baef
url
https://medium.com/@su_bak/%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC-%EC%A0%95%EB%A7%90-%EC%95%8C%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-7ce47e02baef
canonical_url
https://medium.com/@su_bak/%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC-%EC%A0%95%EB%A7%90-%EC%95%8C%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-7ce47e02baef
author_url
https://medium.com/@su_bak
status
ok
fetched_at
2026-06-20 20:29:01