Programming Language/C, C++

C 포인터

MOLOKINI 2014. 10. 10. 12:06

포인터

 

이해하기도 어렵고 악명높은 포인터에 대해 이야기해보도록 하겠습니다.

 

사전적 의미로는

Point : 가리키다, 지적하다

라는 의미를 갖고있습니다.

 

선언법은 아래와 같습니다.

 

int *p;

char *c;

float *k;

 

와 같이 만듭니다.

 

그럼 일반적인 기억공간의 선언과 비교를 해보자면!

 

위 그림과 같이 int *p라고 선언할 때에는 p라는 이름의 주소번지를 담을 수 있는 기억장소가 만들어집니다.

따라서, 이렇게 선언이 된 경우에는 p = 30; 과 같은 구문은 동작하지 않습니다.

 - p라는 공간은 주소번지만 담을 수 있는 공간이거든요!!

 - 30과 같은 정수형 변수는 넣을 수 없습니다. 주소가 아니기 때문이죠

 

정작 정수형 변수를 넣을 수 있는 공간은 *p라는 기억장소입니다.

 - *p = 30 은 된다 요말입니다.

 

그럼 *p는 무엇인가?

*p에서 *는 연산자입니다.

* 이것이 바로 포인터 연산자입니다.

 - * : 가리킨다, 포인터 연산자이기 때문에 p가 가지고 있는 주소번지를 가리킨다 라고 생각하시면 되겠습니다.

 - 즉, p에는 0033:00A0 와 같은 메모리의 주소번지를 가질 수 있으며 이 주소번지를 찾아간 기억장소가 바로 *p인 것입니다.

 - 바로 이 *p의 기억장소에 정수형 데이터를 저장할 수 있다는 이야기입니다.

 

'Programming Language > C, C++' 카테고리의 다른 글

C++ 인라인 함수  (0) 2014.10.10
C 배열과 포인터  (0) 2014.10.10
C 삼항연산자  (0) 2014.10.09
C 비트연산자  (0) 2014.10.09
Release모드에서 디버깅하기  (0) 2014.05.13