[문법] 2차원 배열을 함수의 매개변수로 사용하기
2차원 배열을 사용하기 위해서 아무 생각없이 아래와 같이 사용했다가 문법 에러가 발생했다.
int func(int* parameter[]) {
// somthing else...
}
위 표현과 동일한 표현은 첨자를 두 번 연달아 사용한 경우다.
int func(int parameter[][]) {
// somthing else...
}
위와 같은 방식이 왜 안되는지 찾아보고 가만히 생각해보니까 안되는게 당연하다.
이유는 포인터가 주소 연산을 하기 위해선 자신이 가리키는 대상에 크기가 정해져있어야 하는데 위와 같이 쓰면 포인터가 가리키는 대상이 int[] 배열이 되므로 크기를 알 수 없다. 1차원 포인터를 예를 들면
int func(int* parameter) {
// somthing else...
}
위 코드의 1차원 포인터 parameter는 자신이 가리키는 대상이 4byte라는걸 알 수 있다.
결론적으로 2차원 배열을 매개변수로 넘기려면 크기를 명시해준다.
// 크기를 명시해주는 경우
int func(int parameter[][16]) {
// somthing else...
}
'Programming > C C++' 카테고리의 다른 글
[C++17] Structed Bindings (0) | 2019.11.09 |
---|---|
C++ memset() vs fill(), fill_n() (3) | 2019.09.23 |
[C++/Build] 빌드 자동화를 위한 make 유틸리티 (0) | 2019.06.17 |
[C++/Build] Makefile - 빌드 자동화 (0) | 2019.06.13 |
[C++ STL] '정렬 알고리즘(sort algorithm)' (0) | 2019.06.03 |
댓글
이 글 공유하기
다른 글
-
[C++17] Structed Bindings
[C++17] Structed Bindings
2019.11.09 -
C++ memset() vs fill(), fill_n()
C++ memset() vs fill(), fill_n()
2019.09.23 -
[C++/Build] 빌드 자동화를 위한 make 유틸리티
[C++/Build] 빌드 자동화를 위한 make 유틸리티
2019.06.17 -
[C++/Build] Makefile - 빌드 자동화
[C++/Build] Makefile - 빌드 자동화
2019.06.13