배열의 포인터는 크게 *(단일 포인터) 또는 **(이중 포인터)로 받을 수가 있다. 역참조는 해당 포인터가 자기 자신을 가리키게끔 하는건데 예시로 *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]
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ NULL과 nullptr의 차이 (0) | 2022.08.04 |
---|---|
C++ 가변 길이 배열 (Variable Length Array) (0) | 2022.08.02 |
C++ 얕은 복사 깊은 복사 (Shallow/Deep Copy) (0) | 2022.07.29 |
C++ 임시 객체 (Temporary Object) (0) | 2022.07.29 |
C++ 부모 클래스 함수 호출과 오버라이딩 (override) (0) | 2022.07.28 |