[C++] POINTER - 포인터
주소값 표현 방법
1. &변수
2. 배열명
3. 함수명
4. 문자열
5. 포인터
포인터 : 크기는 4byte로, 주소를 저장하는 변수 -> 간접 변수
pointer = point (address) + er -> 지시자
기본 형식
가르키는 타입 * 변수명;
기능
1. 오직 주소만 받을 수 있다
2. 받은 주소의 값을 알 수 있다
3. 받은 주소의 값을 변경할 수 있다
4. 주소를 사용할 수 있다
5. 1:1 방식 -> 동시에 여러개를 잡지를 못한다
포인터 법칙
1. 첨자와 갯수가 같으면 값, 다르면 주소이다
2. 주소도 차원이 있다
- 1개가 부족하면 1차원, 2개가 부족하면 2차원, 3개가 부족하면 3차원
3. 1차원 주소자에 +1을 하면, 한 요소의 사이즈 (하나의 변수)
2차원 주소자에 +1을 하면, 한 행의 사이즈
3차원 주소자에 +1을 하면, 한 면의 사이즈
4. '*'와 '[ ]'를 바꿔서 표현 할 수 있다
- 모양이 바뀌어도 원래의 의미는 바뀌지 않는다
ex) a[ ][ ] = **a;
#포인터는 자주 움직이지 않는게 좋다
//ArrayList
휘발성 포인터 : 커서
고정 포인터 : 헤드
포인터 표현방법
A aa;
A *p;
p = &a; 일때,
p->a = 10;
(*p).a = 10;
동적 바인딩 : 부모가 자식을 접근하는것 - 다형성
- 부모가 알고 있는것만 사용 가능 -> 자식이 생성한것은 사용 불가(알 수 없음)
Ex)
int a;
a
|
|
|
|
int *p; // 포인터 p가 가르키는 값
*p
|
|
|
p = &a; 이면,
*p는 a의 주소값을 가리킨다
//&p -> 포인터 자신의 주소
*p = 300; //a는 300으로 출력이 된다