2011년 10월 29일 토요일

[C언어]2차원 배열을 함수 인자로 전달하기

2차원 배열을 함수로전달하는 방법을 인터넷에서 찾아보니 가장 일반적인 방법은 다음과 같았다.

void func(int variable[][10]) {

}

int main() {
  int va[10][10];

  func(va);
}

하지만 이와 같은 방법은 호출할 함수에서 배열의 크기를 미리 알아야 한다는 문제가 있기 때문에 "int va[a][b]"와 같이 배열의 크기가 가변적인 상황에서는 이용하기 힘들다. 그래서 생각한 방법이 "배열의 크기가 가변적이라면 크기도 같이 보내주자"였다. 결과적으로 다음과 같은 코드가 작성됬다.


void func(int b, int variable[][b]) {

}

int main() {
  int va[10][10];

  func(10, va);
}


위와 같이 코드를 작성하니 에러가 발생하지 않았으며, warning 조차도 보이지 않았으며, 배열에의 접근도 정상적으로 가능하였다.

댓글 3개: