프로그래밍 언어/C++
C/C++ 포인터 역참조 (deference)
ShovelingLife
2022. 8. 2. 09:04
배열의 포인터는 크게 *(단일 포인터) 또는 **(이중 포인터)로 받을 수가 있다. 역참조는 해당 포인터가 자기 자신을 가리키게끔 하는건데 예시로 *ptr이면 ptr-> 성질과 비슷하다, 즉 null 포인터일 시 당연히 뻥난다.
- *ptr는 arr의 시작 주소를 받아내고 전체 배열의 접근이 가능하다.
- *ptr2는 단일 주소 포인터다, 오직 할당받은 &배열[인덱스]에만 접근 가능하다.
- *(ptr3)[10] 이건 이중 포인터로 받아내는 것이다, 2차원 배열 또는 포인터 배열로 접근할 수가 있다.
#include <iostream>
using namespace std;
int main()
{
int arr[10]{ 5 };
for (int i = 1; i < 10; i++)
arr[i] = arr[i - 1] + 5;
int* ptr = arr;
int* ptr2 = &arr[2];
int(* ptr3)[10] = &arr;
cout << *ptr << endl; // arr[0]
cout << *ptr2 << endl; // arr[2]
cout << ptr3[0][4] << " " << (*ptr3)[4] << endl; // arr[4]
}