1. C언어 포인터
처음 C, C++ 입문하시는 분들이 가장 어려워하는 부분 중 하나가 바로 포인터입니다.
제가 생각할 때 처음에 가장 쉽게 이해하는 방법은 바로 그림을 그리면서 하나씩 쫒아가 보는 방법입니다.
자, 포인터란 무엇인가 하면 변수의 주소를 저장하는 변수를 말합니다.
저번 변수를 설명할 때 보았던 그림을 다시 보겠습니다.
short Num1 = 10; |
다음과 같은 3개의 변수에 대해서 주소값을 저장하는 포인터 변수를 선언하게 되면, 다음과 같습니다.
// 변수 |
먼저 해당 변수의 주소값을 표현하기 위해서 변수명 앞에 &(앤퍼센드) 기호를 붙이는 것을 알 수 있습니다.
pShort, pInt, pChar 는 주소를 담기위한 변수입니다. 이 포인터 변수들의 선언된 자료형을 보면,
short 타입 변수 Num1 의 주소를 담기위한 변수 pShort 는 자료형이 short* 로 선언되어 있습니다.
int 타입 변수 Num2 의 주소를 담기위한 변수 pInt 는 자료형이 int* 로 선언되었습니다.
char 타입 변수 Ch1 의 주소를 담기 위한 변수 pChar 는 자료형이 char* 로 선언되었습니다.
이를 통해서 알수 있는 건 포인터 변수의 자료형은 자신이 저장할 주소에 해당하는 변수타입에 *를 붙인 형태입니다.
또한 그림을 보면 주소를 담는 포인터 변수들은 타입에 상관없이 4바이트의 크기를 차지하고 있는 것을 알 수 있네요.
그렇다면 변수의 주소값을 가져와서 무엇을 할 수 있을까요?
다음 코드를 살펴 보겠습니다.
// 주소값이 가리키는 원본을 수정한다. |
pShort 는 short 타입의 변수 Num1 의 주소값을 저장하고 있었습니다.
*pShort 의 의미는 주소타입 변수 명 앞에 *을 붙임으로서, 주소값이 가리키는 변수에 접근한다는 의미입니다.
즉 우리는 포인터 변수를 통해서 거기에 담긴 주소값으로 원본 변수를 수정할 수 있습니다.
앞으로 포인터가 정확하게 무엇인지, 어떻게 활용 할 수 있을지 알아보도록 하겠습니다.
- by Raimondo
'정보 & 소식 > C, C++' 카테고리의 다른 글
[Effective C++] 클래스의 생성 (0) | 2016.05.18 |
---|---|
배열과 포인터 (0) | 2016.04.28 |
포인터와 운영체제 (0) | 2016.04.28 |
전처리문의 종류 (0) | 2016.04.28 |
C언어 기본 자료형 (0) | 2016.04.28 |