정보처리기사 · 핵심요약

2026 정보처리기사 필기 핵심요약

2026

학습유형 선택

프로그래밍 언어 활용

핵심262

포인터와 포인터 변수

출제 빈도 3회

원본 81~82쪽

포인터는 변수의 주소를 말하며, C언어에서는 주소를 제어할 수 있는 기능을 제공한다.

C언어에서 변수의 주소를 저장할 때 사용하는 변수를 포인터 변수라 한다.

포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 *를 붙인다( int *a;).

포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 번지 연산자 &를 붙인다( a = &b;).

실행문에서 포인터 변수에 간접 연산자 *를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말한다( c = *a;).

포인터 변수는 필요에 의해 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수이다.

메모리

주소

0
4100
8
12
504

a

b

예를 들어, a 변수에 100을 저장시키고, a 변수의 주소를 포인터 변수 b에 기억시켰다면 다음 그림과 같이 표현하고 말할 수 있다.

a는 메모리의 4번지에 대한 이름이다.

a 변수의 주소는 4다.

a 변수에는 100이 기억되어 있다.

4번지에는 100이 기억되어 있다.

&a는 a 변수의 주소를 말한다. 즉 &a는 4다.

포인터 변수 b는 a 변수의 주소를 기억하고 있다.

포인터 변수가 가리키는 곳의 값을 말할 때는 *을 붙인다.

*b는 b에 저장된 주소가 가리키는 곳에 저장된 값을 말하므로 100이다.

예제 1 다음 C언어로 구현된 프로그램의 출력 결과를 확

인하시오.

main( )
{
int a = 50; ❶

정수형 변수 a를 선언하고 50으로 초기화 한다. 정수형 변수가 저장된 곳의 주소를 기억할 포인터 변수 b를 선언한다. 정수형 변수 a의 주소를 포인터 변수 b에 기억시킨다. b에는 a의 주소가 저장된다. b가 가리키는 곳의 값에 20을 더한다. b가 가리키는 곳이 a이므로 결국 a의 값도 바뀌는 것이다.

int *b; ❷
b = &a; ❸
*b = *b+20; ❹
printf(“%d, %d”, a, *b); ❺

70, 70

결과

❷와 같이 선언할 때 *는 해당 변수가 포인터 변수라는 것을 의미한다.

❹, ❺와 같이 사용할 때 *를 붙이면 그 포인터 변수가 가리키는 곳의 값을 의미한다.

}

위 코드의 실행 과정에 따라 메모리의 변화를 그려보면 다음과 같다. ❶, ❷번 수행 : 주기억장치의 빈 공간 어딘가에 a라는 이름을 붙이고 그 곳에 50을 저장함

메모리

주소0000⋮a 1000⋮9999

50

b

❸번 수행 : 변수 a의 주소가 b에 기억된다는 것은 b가 변수 a의 주소를 가리키고 있다는 의미

메모리

주소0000⋮a 1000⋮9999

50
1000

b

❹번 수행 : b가 가리키는 곳의 값에 20을 더해 다시 b가 가리키는 곳에 저장함. 그곳은 변수 a의 주소이므로 변수 a의 값도 저절로 변경되는 것

메모리

주소0000⋮a 1000⋮9999

70
1000

b

원본 추출 이미지(검수용·회차 숫자 원문 포함)

구조화된 본문이 원본과 맞게 들어갔는지 확인하기 위한 이미지입니다. 이미지 안에는 원본 회차 숫자와 다음 절 일부가 포함될 수 있습니다.