IT 정보/C언어

[C/C언어/VC++]포인터 개념 이해하기

김윤석 2007. 12. 12. 18:41

포인터 변수

- 주소를 값으로 갖는 변수를 포인터 변수라 한다.
- 변수명 앞에 '*'를 사용하여 선언한다.
데이터가 저장되어있는 메모리 내의 위치를 나타내는 주소값으로, 주소값이 기억된 변수를 포인터변수라 하며,
포인터연산자 * 를 이용하여 참조할 데이터의 형으로 선언함
* : 포인터가 가리키는 곳의 값을 가져올 변수에 부여
& : 변수가 정의되어 있는 주소를 가져올 때 변수에 부여

예) int *ap; char *p; float *fp;


포인터 연산자

예제 1)
#include<stdio.h>
main(){
int num1,num2,*p; /*포인터 변수 선언 */
num1=3000;
p=&num1; /*변수num1의 주소를 p에 대입한다. */
num2=*p; /*포인터 p가 가르키는 주소에 저장되어 있는 값을
num2에 저장한다.*/
printf("num1=%d\n num2=%d\n",num1,num2);
printf("the adrress of value =%d the address of value=%d\n",&num1,p);
}

예제 2)
#include<stdio.h>
main(){
int *p1; /* int 형을 가리키는 포인터 변수 선언*/
char *p2; /*char 형을 가리키는 포인터 변수 선언 */
p1=1000;
p2=2000;
printf("p1+1=>%d\n",++p1);
printf("p1+2=>%d\n",++p1);
printf("p2+1=>%d\n",--p2);
printf("p2+2=>%d\n",--p2);
}
위의 예제에서 포인터를 증가시키는 것은 다음번째
데이터의 시작위치를 가리키는 것을 의미한다. 또한
포인터를 감소시키는 것은 그 이전 데이터가 저장되어
있는 시작주소를 가리키는 것을 의미한다.
따라서 포인터를 증가시키거나 감소시키면 데이터의
크기만큼 증가하거나 감소한다.

[출력결과]
p1+1=>1002
p1+2=>1004
p2-1=>1999
p2-2=>1998

출처 : http://www.it-bank.or.kr/prom/c_main.htm