저건 int 배열에 대한 포인터입니다.
말 그대로 배열의 주소를 전달함으로써 배열을 고스란히 매개변수로 넘겨주는 것이죠.
사실 배열은 그냥 놔두면 알아서 첫 원소를 가리키는 포인터로 변환되기 때문에, 그렇게 전달하는 방식이 더 널리 쓰이기는 합니다만,
이 방법의 장점은 배열을 받는 쪽에서 배열의 크기 정보를 타입에 남겨둘 수 있다는 것이죠.
덕분에 특히 2차원 이상의 배열을 넘겨줄 때 유용합니다.
덧. 생각해 보니까, 오목판은 2차원 배열이겠군요.
제가 아까 배열은 그냥 놔두면 알아서 첫 원소를 가리키는 포인터로 변환된다고 말씀드렸던 것 기억하시나요.
따라서 int array2d[ARRAY_LEN][ARRAY_LEN];일 때 array2d는 int[ARRAY_LEN][ARRAY_LEN] 타입이었지만 int(*)[ARRAY_LEN]으로 변환됩니다.
2차원 배열을 그대로 넘겨주려면 사실 &array2d와 같이 할 수 있겠지만(그러면 타입이 int(*)[ARRAY_LEN][ARRAY_LEN]이 됩니다), 그렇게까지 하지는 않은 것 같네요.
질문자님의 코드와 비슷할 것 같은 용례를 하나 더 드리지요.
#include <stdio.h>#define ARRAY_LEN 10staticvoid init_array(int(*)[ARRAY_LEN]);staticvoid print_array(constint(*)[ARRAY_LEN]);int main(void){int array2d[ARRAY_LEN][ARRAY_LEN];
init_array(array2d);
print_array(array2d);return0;}void init_array(int(*parray)[ARRAY_LEN]){int i, j;for(i=0;i<ARRAY_LEN;i++)for(j=0;j<ARRAY_LEN;j++)
parray[i][j]= i * ARRAY_LEN + j;return;}void print_array(constint(*parray)[ARRAY_LEN]){int i, j;for(i=0;i<ARRAY_LEN;i++){for(j=0;j<ARRAY_LEN;j++)printf("%3d", parray[i][j]);putchar('\n');}return;}
int 포인터의 배열은 int *array_of
int 포인터의 배열은
int *array_of_pointers[]
이고요.저건 int 배열에 대한 포인터입니다.
말 그대로 배열의 주소를 전달함으로써 배열을 고스란히 매개변수로 넘겨주는 것이죠.
사실 배열은 그냥 놔두면 알아서 첫 원소를 가리키는 포인터로 변환되기 때문에, 그렇게 전달하는 방식이 더 널리 쓰이기는 합니다만,
이 방법의 장점은 배열을 받는 쪽에서 배열의 크기 정보를 타입에 남겨둘 수 있다는 것이죠.
덕분에 특히 2차원 이상의 배열을 넘겨줄 때 유용합니다.
단점이라면, 많은 사람들에게 익숙한 문법이 아니라는 거죠.
용례는 아래와 같습니다.
실행 결과: https://ideone.com/KfDRkZ
덧. 생각해 보니까, 오목판은 2차원 배열이겠군요.
제가 아까 배열은 그냥 놔두면 알아서 첫 원소를 가리키는 포인터로 변환된다고 말씀드렸던 것 기억하시나요.
따라서
int array2d[ARRAY_LEN][ARRAY_LEN];
일 때array2d
는int [ARRAY_LEN][ARRAY_LEN]
타입이었지만int (*)[ARRAY_LEN]
으로 변환됩니다.2차원 배열을 그대로 넘겨주려면 사실
&array2d
와 같이 할 수 있겠지만(그러면 타입이int (*)[ARRAY_LEN][ARRAY_LEN]
이 됩니다), 그렇게까지 하지는 않은 것 같네요.질문자님의 코드와 비슷할 것 같은 용례를 하나 더 드리지요.
실행 결과: https://ideone.com/LHegTd
답변 감사드립니다 속시원하게 해결되었습니다 ^^
답변 감사드립니다 속시원하게 해결되었습니다 ^^
참고해보세요.
정확한지 값을 출력하거나. 잘아시는분께 확인해보세요.
How do I declare a 2d array in C++ using new?
http://stackoverflow.com/questions/936687/how-do-i-declare-a-2d-array-in-c-using-new/936702
C언어 int (*arr)[]
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=273010140&qb=aW50KCopW10=&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0
http://codepad.org/3iJn217D
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
감사합니다 참고하도록 하겠습니다!
감사합니다 참고하도록 하겠습니다!
댓글 달기