инициализация предупреждения от несовместимого типа указателя - массив C указателей на функции - PullRequest
0 голосов
/ 16 октября 2019

У меня проблемы с решением этого предупреждения

вот мои прототипы

int doubeInput (int* inputVal);
int squareInput (int* inputVal);
int cubeInput (int* inputVal);

строка с ошибкой

int (*funPtrArr[])(int)={doubleInput, squareInput, cubeInput};

эта строка находится вmain

while (choice >0 && choice <=3)
    {
        (*funPtrArr[choice])(inputVal); 

    }

и вот мои функции

//function to perform the menu option 1,user input passed in
int doubleInput (int* inputVal)
{
    //calculate double
    int answer = (*inputVal) *= (2);
    printf("%d x 2", inputVal); 

    return (answer);
}


//function to perform the menu option 2,user input passed in
int squareInput (int* inputVal)
{
    //calculate square
    int answer = (*inputVal) *= (*inputVal);
    printf("%d x %d", inputVal, inputVal);

    return (answer);

}


//function to perform the menu option 3,user input passed in
int cubeInput (int* inputVal)
{
    //calculate cube
    int answer = (*inputVal) *= (*inputVal) *= (*inputVal);
    printf("%d ^ 3", inputVal);

    return (answer);
}

Я продолжаю получать эту ошибку, я очень плохо знаком с C. Мои функции еще не завершены, потому что я не былв состоянии проверить их. пожалуйста помогите

1 Ответ

2 голосов
/ 16 октября 2019
int (*funPtrArr[])(int) 

объявляет массив указателей на функции с параметром int, но ваши функции имеют параметр int *. Таким образом, строка должна быть

int (*funPtrArr[])(int *)={doubleInput, squareInput, cubeInput};
...