20160512_포인터
1. 포인터란 무엇인가
포인터는 주소값을 저장하기 위해 사용하는 변수이다.
2. 포인터 사용방법
- *를 붙이면 포인터를 나타낸다.
int *pA; // int 형 포인터 pA
- 포인터는 주소값을 담는 변수이므로 '&변수명'을 이용해 값을 넣을 수 있다.
int a;
int *pA = &a;
- 포인터에 담긴 주소에 있는 값을 출력하려면 *을 이용한다.
int a = 3;
int *pA = &a;
cout << a << endl; // 3
cout << pA << endl; // a의 주소 출력 ex. 0x00003fef
cout << *pA << endl; // a의 주소에 있는 값 출력 3
3. 포인터 특징
- 포인터는 주소를 담는 변수이다.
- 포인터는 주소를 담기 때문에 포인터의 크기는 주소길이를 담을 크기인 4byte이다.
- 배열의 이름은 그 배열의 0번째 인덱스를 가리키는 포인터이다.
- 포인터의 형태가 존재하는 이유는 몇 바이트씩 이동해야 하는 가를 정하기 위함이다. 아래의 예를 실행해보면 알 수 있다.
int * ptr1 = 0;
char * ptr2 = 0;
double * ptr3 = 0;
printf( "%d 번지, %d 번지, %d 번지 \n", ptr1++, ptr2++, ptr3++ );// 0,0,0
printf( "%d 번지, %d 번지, %d 번지 \n", ptr1++, ptr2++, ptr3++ );//4,1,8
printf( "%d 번지, %d 번지, %d 번지 \n", ptr1++, ptr2++, ptr3++ );//8,2,16
printf( "%d 번지, %d 번지, %d 번지 \n", ptr1++, ptr2++, ptr3++ );//12,3,24
printf( "%d 번지, %d 번지, %d 번지 \n", ptr1++, ptr2++, ptr3++ );//16,4,32