2차원 배열을 함수로 전달할 수가 없습니다


발생하는 문제 및 실행환경

2차원 배열을 함수로 받는

void myFunction(double** myArray){
     myArray[x][y] = 5;
     etc...
}

이런 함수가 있는데

double anArray[10][10];
myFunction(anArray)

같이 쓰니까 에러가 뜹니다. 배열의 이름은 포인터니까 anArraydouble**타입 아닌가요? 다른 사람들은 2차원 배열 잘만 넘기던데 왜 제 컴퓨터에서만 이러나요

  • 2016년 01월 29일에 작성됨

조회수 282


1 답변


좋아요
0
싫어요
채택취소하기

double anArray[10][10];anArraydouble**타입이 아니라 double[10][10] 타입입니다.

함수 인자로 2차원 배열을 받으려면 다음과 같이 형을 맞춰줘야 합니다

1. 인자가 2차원 배열인 경우

int array[10][10];
void passFunc(int a[][10])
{
    // ...
}
passFunc(array);

2. 인자가 배열을 포함하는 포인터인 경우

int *array[10];
for(int i = 0; i < 10; i++)
    array[i] = new int[10];
void passFunc(int *a[10]) //Array containing pointers
{
    // ...
}
passFunc(array);

3. 인자가 포인터를 가리키는 포인터인 경우

int **array;
array = new int *[10];
for(int i = 0; i <10; i++)
    array[i] = new int[10];
void passFunc(int **a)
{
    // ...
}
passFunc(array);
  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close