포인터
이해하기도 어렵고 악명높은 포인터에 대해 이야기해보도록 하겠습니다.
사전적 의미로는
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 |