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);
}

1

포인터 변수 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

포인터 변수의 장점은 어떤 변수의 주소를 저장하느냐에 따라서 간접 접근 대상이 바뀌게된다.

태그: ,

카테고리:

업데이트:

댓글남기기