(1) 포인터란?
: 메모리의 어드레스(Address)를 데이터로 취급하는 변수.

- 포인터는 주소값을 저장하기 위한 변수이다.
- 32bit 시스템은 32bit(4byte)의 크기로 주소값을 표현하며, 2의 32승개 즉, 4G 만큼의 주소값을 만들어 낼 수 있다.
- 따라서 32bit 시스템은 32bit로 표현되는 주소값을 저장하기 위해서 포인터변수의 크기 또한 4byte이다.


int var;            
// int형 일반변수 var 선언
int *p;              // int형 포인터 변수 p 선언

p = &var;          // 포인터 변수 p에 일반변수 var의 주소값을 저장

- 변수 var의 주소값을 포인터 변수 p에 저장 할 수 있다.
- 다시말해, 포인터변수 p는 4byte의 크기에 변수 var의 주소값을 저장하고 있다.
- 이 상태를 '포인터 변수 p가 일반 변수 var를 가리키고 있다' 라고 한다.


(2) 포인터 타입과 선언
: 포인터를 선언할 때에는 * 연산자를 사용한다.
  또한 포인터에는 가리키고자 하는 변수의 자료형에 맞추어  적절한 타입의 포인터를 선언해야 한다.

- int *a : int형 변수의 주소값을 지닐 수 있는 int형 포인터
- char *b : char형 변수의 주소값을 지닐 수 있는 char형 포인터
- double *c : double형 변수의 주소값을 지닐 수 있는 double형 포인터


(3) 포인터를 통한 데이터 접근


○ 직접 접근 : 변수 var를 직접 호출해서 데이터에 접근. ( var = 10; )

○ 포인터를 통한 간접 접근
  : 포인터 변수 p가 var을 가리키고 있는 상태에서는 포인터 변수 p를 통해 간접적으로 var의 데이터에 접근. ( *p = 10; )

※ '*'연산자는 보통 "p가 가리키고 있는 변수의 값을 가져온다." (p가 가리키고 있는 곳 = 장소)




※ 참고자료 : http://2xx195.tistory.com/8

'P rogramming > C Language' 카테고리의 다른 글

2차원 배열과 포인터 이론  (4) 2011.10.26
1차원 배열과 포인터 이론  (0) 2011.10.26
2차원 배열의 연산  (0) 2011.10.25
2차원 배열의 포인터  (0) 2011.10.25
배열과 포인터의 관계  (0) 2011.10.25
by 민트앤라떼 2011. 10. 26. 11:06