다양한 종류의 포인터 정리2015. 5. 29. 14:28
포인터 :
주소값을 가리키는 변수
보통 4바이트, 주소값 1개를 가리킬 수 있다.
같은 자료형의 주소값을 가질 수 있다
cf. 배열은 포인터다.
ex :
int a = 5;
int* ptr = &a;
=> int* ptr == int 형 주소값을 가리킬 수 있는 포인터 *ptr
더블 포인터 :
포인터를 가리키는 포인터
ex :
int a = 5;
int* ptr = &a;
int** pptr = &ptr;
=> int** pptr == int* 형 주소값을 가리킬 수 있는 이중포인터 **ptr
포인터 배열 :
자료형이 포인터인 배열
ex :
int* ptr[10];
=> 10개의 방이 있는데, 이 각 원소들은 포인터형이므로 주소값을 가질 수 있다
배열 포인터 :
2차원 배열일때 쓰이는 경우가 많으며
1개의 배열이 다른 배열을 가리킨다.
ex :
int (*ptr) [10];
=> *ptr (포인터가) , int 형 방 10개의 배열을 가리킨다.
함수 포인터 :
포인터가 함수의 주소값을 가진다.
즉, 함수를 가리키는 포인터
ex:
int (*fptr) (int, int);
fptr은 포인터이며, int func(int, int) 이렇게 생긴 함수를 가리킬 수 있다.
즉, fptr 포인터는 반환형이 int 이고 매개변수가 (int,int)인 (이것과일치하는) 함수의 주소값을 가질 수 있다
const 포인터 :
const의 위치에 따라 의미가 달라진다.
ex 1 :
const int* ptr;
=> 포인터 ptr이 가리키는 내용을 변경하지 않겠다. (대상변경 o , 값 변경 x)
ptr 이 a (int a = 5;)의 주소값을 가지고 있다고 가정할때, 맨 앞에 const를 붙이면 a의 값을 변경시킬 수 없다.
ex 2 :
char* const ptr;
=> 포인터가 가리키고 있는 주소값을 변경하지 않겠다. (대상변경 x, 값 변경 o)
ptr 이 a (int a = 5;)의 주소값을 가지고 있다고 가정할때, ptr이 다른 int형 변수 b를 가리키도록 할 수 없다.
void 포인터 :
동적할당 기본 반환형이며,
포인터 형이 정해지지 않은 포인터를 의미
순수하게 메모리 주소값만 가진다. 포인터형은 나중에 직접 결정하겠다는 의미
그래서 사용시에는 꼭 명시적으로 반환형을 적어야한다.
ex :
void* ptr;
'Language > C++' 카테고리의 다른 글
문자열의 숫자을 더하고 출력하기 (0) | 2015.05.29 |
---|---|
단어를 입력받고, 사전 순서대로 출력하기 (0) | 2015.05.29 |
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |
[C 기초] 자리맞춰서 출력하기 (2) | 2015.04.20 |