대부분 기본적으로 포인터가 무엇인지
포인터를 어떻게 사용해야 하는지 알고 있습니다.
int a = 3;
int* p = &a;
int** pp = &p;
다음과 같이 어떤 변수의 주소를 나타낸다는 것.
여기까지는 쉽게 알 수 있는 내용입니다.
그런데 잘 알고 있다고 생각한 포인터를
사용할 때 가끔 헷갈리는 경우가 있습니다.
뭐 문법 이것저것 Visual Studio에서 써보면 알 수 있겠지만
이렇게 시도해보는 것 자체가 시간을 잡아먹는 요인이 됩니다.
따라서 이번 포스팅에서는 헷갈릴 수 있을만한
포인터 문법에 대하여 알아보도록 하겠습니다.
1. 다차원 배열의 등장
int arr[4][5];
다음과 같은 배열을 선언했을 때 포인터로 어떻게 가리킬까요?
생소하실 수도 있겠지만 문법은 다음과 같습니다.
int (*ptr)[5];
아! 참고로 이것과 다릅니다 -> int* arr[4];
1) int (*ptr)[5] : 열이 5개인 int형 2차원 배열을 가리키는 포인터 변수입니다.
2) int* arr[4] : int형 포인터로 이루어진 배열
따라서 위 내용을 헷갈리시면 안 됩니다.
2차원 배열의 주소를 함수로 전달할 때는?
void func(int arr[5]);
void func(int (*arr)[5]);
좀 더 응용해서 3차원 배열이라면 어떻게 표현할까요?
int arr[3][4][5];
이 경우는 다음과 같이 표현합니다.
int (*ptr)[4][5];
다음 4차원, 5차원 등은 위 내용을 응용하실 수 있겠죠?
'알고리즘' 카테고리의 다른 글
Parallel Binary Search (0) | 2018.08.15 |
---|---|
boj2319)사수아탕 (0) | 2018.08.15 |
이항계수를 빠르게 구하는 알고리즘 (3) | 2018.07.05 |
Usaco Gold) Fair Photography (0) | 2018.06.03 |
[기하] 다각형의 내부 외부 판별 (0) | 2018.05.13 |