Learn business/C++

[C++]포인터


[포인터 개념]

변수의 주소나 배열의 이름을 포인터의 값으로 가진다.

주 메모리상의 여러 형태의 주소를 값으로 취한다.

포인터가 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