C언어 포인터 Pointer
Intro
- 포인터에 대한 이해
포인터란
포인터 변수란 주소를 저장하는 변수이다.
포인터는 메모리 공간의 주소를 저장한다.
포인터를 사용하는 이유
포인터를 사용하면 주소를 통해 접근해 주소에 들어있는 값을 변경할 수 있다.
따라서 어떤 변수의 값을 변경하고자 할 때 포인터의 주소로 바로 접근하여 직접 값을 변경할 수도있고 지역변수가 저장된 포인터 변수를 다른 함수에 넘겨주어 다른 함수에서도 값을 변경 할 수있도록 활용할 수도 있다.
포인터 변수의 선언
다음과 같이 자료형 다음에 *연산자를 붙이고 포인터 변수의 이름을 쓴다.
int * pointer
= NULL;
혹은 다음과 같이 선언과 주소 저장을 동시에 할수있다.
int * pointer
= &a;
예제
#include <stdio.h>
int main()
{
int a = 0;
int * pt = &a;
*pt = 10;
printf("%d %d \n", a, *pt);
}
포인터 변수 pt에 &a(변수 a의 주소)를 저장한다음
- pt=10을 수행
이때 pt는 &a를 저장하고 있으므로 *pt는
*&a와 같다. 따라서 a에 간접 접근해서 10을 저장하게된다.
결과
10 10
예제 2
결과 2
1 2 1 1
00F9C034 00F9C038 00F9C034 00F9C034
1 2 2 1
00F9C034 00F9C038 00F9C038 00F9C034
1 3 3 1
00F9C034 00F9C038 00F9C038 00F9C034
4 3 3 4
00F9C034 00F9C038 00F9C038 00F9C034
포인터 변수의 장점은 어떤 변수의 주소를 저장하느냐에 따라서 간접 접근 대상이 바뀌게된다.
댓글남기기