[C++ ] 2차원 포인터 정리
-----------------------------------------------------------------------------------------
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 = # // 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 = # // 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의 변수 값을 확인 할 수있다.
끝.
댓글
댓글 쓰기