[포인터 개념]
• 변수의 주소나 배열의 이름을 포인터의 값으로 가진다.
• 주 메모리상의 여러 형태의 주소를 값으로 취한다.
• 포인터가 1byte char형을 가리키던 8byte double형을 가리키던 가리켜야 할 주소는 모두 4byte(32bit)이다.
[주소 개념 이해]
• 변수 앞에 &를 붙일 경우 변수의 주소를 말한다.
• ‘&’를 주소 연산자라고 한다.
• 주소는 컴파일러에 의해 결정된다.
[포인터 초기화 방법]
//방법 1 int a = 26; int *pa; pa = &a; //방법 2 int b = 26; int *pb = &b;
[예시1]
int a = 7; int *p = &a
a 표현 | 출력 값 | 설명 | p 표현 |
a | 7 | a 변수의 값 | *p==*(0x789) |
&a | 0x789 | a 변수의 주소 | p |
*&a | 7 | a 변수 주소 내의 값 | *&*p 혹은 **&p |
&*&a | 0x789 | *와 &가 만나서 상쇄 된다. | *&p |
[이중 포인터]
• 포인터를 가리킬 수 있는 포인터
• 아래는 초기화 방법
#include <iostream> using namespace std; int main(void) { char **dp, *p, c; p = &c; dp = &p; **dp = 'A'; return 0; }
[예시 2]
• 아래는 3중 포인터까지 예시를 해봤는데 아래 그림을 보고도 충분히 이해가 될 것이다.
• 그리고 표로 출력 내용을 정리해 보았다.
• 참고로 그림에서 큰 네모가 변수의 값, 그 위에 작은 네모는 변수의 주소 값을 의미한다.
#include <iostream> using namespace std; int main(void) { int x = 3; int *pi = &x; int **ppi = &pi int ***pppi = &ppi; return 0; }
| x | pi | ppi | pppi |
&값 | 41 | 50 | 77 | 91 |
값 | 3 | 41 | 50 | 77 |
*값 |
| 3 | 41 | 50 |
**값 |
|
| 3 | 41 |
***값 |
|
|
| 3 |
'Learn business > C++' 카테고리의 다른 글
[C++]포인터와 배열3 (1) | 2016.12.07 |
---|---|
[C++]포인터와 배열2 (0) | 2016.12.06 |
[C++]포인터와 배열1 (1) | 2016.12.06 |
[C++]new & delete (0) | 2016.11.29 |