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

조회수 9507회

발생하는 문제 및 실행환경

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)