Как написать функцию, которая возвращает строку в Си?

Подскажите, пожалуйста, как работает моя функция Change? То есть я передаю туда строку, провожу манипуляции с массивом(?) и возвращаю строку как char*. Как это происходит? Почему нельзя указать тип возвращающего значения char и в аргументе char * arr[]? В моей теории я должен передать функции адрес строки и напрямую работать с ней.


#include <stdio.h>

char* Change(char arr[], int n){
    
    //код

    }
    return arr;
}
int main(){
    int i=0;
    char str[20];
    gets(str);
    while(str[i]!=0){
        i++;
    }
    puts(Change(str, i));

    return 0;
}

В чем ошибка, если я напишу, например, так:

#include <stdio.h>

char Change(char* arr[], int n){
    
    //код

    }
    return arr;
}
int main(){
    int i=0;
    char str[20];
    gets(str);
    while(str[i]!=0){
        i++;
    }
    puts(Change(str, i));

    return 0;
}

Ответы (0 шт):