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

발생하는 문제 및 실행환경

2차원 배열을 함수로 받는

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

이런 함수가 있는데

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

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

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);
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.