C: проблема с символом *

/*
 * code.c
 *
 * TASK
 *      Reverse a string by reversing pointers. Function should use return
 *      type char* and use a char* parameter as input.
 */
#include <stdio.h>
#include <string.h>
#define STRMAX 51

char* reverse(char* sPhrase[]);

int main() {
    char sPhrase[STRMAX];
    char sReverse[STRMAX];
    printf("Enter string (max. 50 chars): ");
    gets(sPhrase);
    sReverse = reverse(sPhrase);

    return 0;
}

char* reverse(char* sPhrase[]) {
    char* sOutput[STRMAX];
    int iCnt = 0, iCntRev;

    for (iCntRev = strlen(*sPhrase)-2; iCntRev >= 0; iCntRev--) {
        sOutput[iCnt] = sPhrase[iCntRev];
        iCnt++;
    }

    *sOutput[iCnt] = '\0';      // Don't forget to close the string

    return sOutput;
}

Этот код имеет некоторые странности:

sReverse = reverse(sPhrase);

[Ошибка] несовместимые типы в присваивании[Предупреждение] передача аргумента 1 `reverse 'из несовместимого типа указателя

return sOutput;

Функция [Warning] возвращает адрес локальной переменной[Предупреждение] возврат из несовместимого типа указателя

Что означают эти предупреждения? Как я могу исправить ошибки? Функция должна сохранять char * как тип возвращаемого значения и как параметр, поскольку я делаю эту небольшую программу как часть учебного курса по Си.

Ответы на вопрос(6)

Ваш ответ на вопрос