-
포인터(1)@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 22:08
1 메모리의 주소 1개는 1byte의 메모리 공간을 갖는다
2 변수는 자료를 저장할 수 있는 메모리 공간의 이름
3 자료형의 크기에 따라 변수가 사용할 메모리 공간의 크기 결정..char int 등..
4 변수의 시작 주소는 &연산자를 변수 앞에 붙여 사용
#
5 변수의 시작주소는 그 변수의 자료형의 주소를 의미
6 *연산자를 주소앞에 붙이면 메모리 이름으로 사용할 수 있다.
즉..int형 변수 n이 있다면 &n은 int형 주소이고..
*&n은 n과 같다..
포인터란 주소를 저장하기 위한 메모리 공간이다.
주소를 저장하는 변수 포인터
포인터 변수의 선언은 *를 붙여 선언한다. char *cp는 char형 주소를 저장하는 변수 cp를 의미
포인터 변수의 크기는 항상 4byte다
*은 주소앞에 사용하면 주소가 가리키는 메모리 값을 의미한다.
char c='a';
char *cp = &c;
*cp, c 둘다 출력시 a
*cp = b이럴시..
c의 값도 b로 변경됨..
다차원포인터
포인터 변수의 주소를 저장하는 포인터
int n= 20;
int *np = &n이라면..
np의 시작주소를 저장하기 위해선..그전 np가 포인터 변수이므로 다차원 포인터에 저장해야한다.
&n을 1차원 int형 주소라 하고 &np를 2차원 int형 주소라 한다.. &np를 저장하기 위해선 2차원 포인터 변수를 사용
int **npp; 이런식으로..
npp=&np;
npp역시 4byte 크기...
*np는 n과 같은 메모리고..**npp도 n과 같은..
np, *np, **npp는 모두 20값을 출력
&np, np, *np 는 모두 같은 주소값 출력..(np의 주소값)
char c = 'a';
char *cp;
char *cpp;
cp = &c;
cpp = &cp;
c는 char형 변수이고, cp는 1차원 char형 주소, cpp는 2차원 char형 주소
c + 1는 정수 1을 가산하라는 것
cp + 1은 char형(1byte)만큼 건너뛰겠다.
cpp + 1은 char형 1차원 주소만큼 건너뛰겠다는 의미 4byte 증가
왜냐면...cp가 뭔고..&c의 주소값이니까....
cpp는? cp의 주소값을..
sizeof(c), (cp), (cpp) 했을시 값은 1, 4, 4 // char형 크기, char형 포인터 크기, char형 포인터 크기
sizeof(c), (*cp), (**cpp) 했을시 값은 1, 1, 1 // 최종적으로 가르키는 값들 크기..char형
'@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글
포인터와 문자열(2) (0) 2013.01.31 배열(1) (0) 2013.01.29 Template (3) 클래스 템플릿 특수화 (0) 2013.01.29 Template (2) 클래스 템플릿 (0) 2013.01.29 Template (1) 함수 템플릿 (0) 2013.01.29