[C++ ] 2차원 포인터 정리

아래 링크 1차원 포인터 정리 링크.

1차원 포인터 정리


-----------------------------------------------------------------------------------------


2차원 포인터 선언 방법

*ptr;

**ptr2;

***ptr3; 

****ptr4;


* 하나 씩붙을 때 마다 각각 1, 2, 3, 4차 포인터 라고 부른다.

*을 붙여 100차원 포인터 그 이상 만들 수있다. 

하지만, 다차원 포인터를 남발하면 너무 복잡해 진다.

실무에서는 최대 2차원 포인터를 사용한다.

 

-----------------------------------------------------------------------------------------

예제

#include <iostream>

using namespace std;


void main()

{

int num = 5;

int* ptr = NULL;

int** ptr2 = NULL;


ptr = &num; // ptr->num

ptr2 = &ptr; // ptr2 -> ptr


cout << "num 주소: " << &num << endl; //num 주소 출력

cout << "ptr 주소: " << &ptr << endl; //ptr 주소 출력

cout << "ptr2 주소: " << &ptr2 << endl;  //ptr2 주소 출력


cout << endl;


cout << "ptr 가리키는 주소: " << ptr << endl;     //ptr이 가리키는 주소 출력

cout << "ptr2 가리키는 주소: " << ptr2 << endl; //ptr2이 가리키는 주소 출력


cout << endl;


cout << "num 주소: " << num << endl; //num 값 출력

cout << "ptr 참조값: " << *ptr << endl; //ptr 참조 값 출력

cout << "ptr2 참조값: " << *ptr2 << endl;       //ptr2 참조 값 출력

cout << "ptr2 이중 참조값: " << **ptr2 << endl; //ptr2 이중 참조 값 출력

}


-----------------------------------------------------------------------------------------

실행결과



-----------------------------------------------------------------------------------------


예제 설명

변수, 1차원 포인터, 2차원 포인터 선언.

int num = 5;

int* ptr = NULL;

int** ptr2 = NULL;


ptr = &num; // ptr->num   *ptr이 num의 주소를 가리키게 되었다.

ptr2 = &ptr; // ptr2 -> ptr    **ptr2가 *ptr의 주소를 가리키게 되었다.


1차원 포인터와 2차원 포인터의 이론은 같다. 

1차원 포인터가 변수의 메모리 주소를 가리키듯이

2차원 포인터가 1차원포인터의 메모리 주소를 가리킨다.

ex) **ptr2 -> *ptr -> num 

아래 그림 참조.









-----------------------------------------------------------------------------------------


**ptr2가 참조하고 있는 값 확인 하기

2차원 포인터가 참조하고 있는 값을 확인 해보자.

참조연산자를 하나를 써서 *ptr2이 참조 하는 값을 출력시

*ptr이 저장하고 있는 num의 주소가 출력된다. (실행 결과 꼭 돌려 볼것.)



-----------------------------------------------------------------------------------------

**Ptr2로 *ptr이 가리키는 변수값 참조하기.

참조연산자를 두개를 써서 **ptr2이 참조 하는 값을 출력시

num의 변수가 출력된다.

이것을 이중참조라고 부른다.








-----------------------------------------------------------------------------------------

정리

1. 2차원 포인터를 사용하여 

2. 1차원 포인터의 메모리 주소 저장 후

3. 2차원 포인터의 이중참조를 통해 1차원 포인터가 가리키는 num의 변수 값을 확인 할 수있다.


 


끝.




댓글

이 블로그의 인기 게시물

[Python] 파이썬 if문 사용법과 예제

[네트워크] 오류 제어 방식 이란?(FEC, BEC, ARQ)

[Virtual Box] 가상머신 에러 E_FAIL (0x80004005), (VERR_SUPLIB_PATH_NOT_CLEAN) 해결 방법