본문 바로가기
알고리즘

[c언어] 포인터에 대해서 마스터하자

by 박정률 2019. 11. 13.

대부분 기본적으로 포인터가 무엇인지

포인터를 어떻게 사용해야 하는지 알고 있습니다.

 

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