У вас несоответствие типов.
Ваша функция определена как возвращающая char *
, но вы возвращаете char *[]
, которая распадается на char **
. Вот что означает предупреждение.
Измените тип возвращаемого значения на char **
вместе со значением, которому вы назначаете возвращаемое значение. Кроме того, вы не можете вернуть указатель на локальную переменную, поэтому вам нужно динамически распределять массив, как вы заявили в комментарии к коду.
#include <stdio.h>
#include <stdlib.h>
char **myFunc(){
char **result = malloc(2 * sizeof(*result));
result[0] = "abc";
result[1] = "def";
return result;
}
int main(void){
char **result = myFunc();
printf("%s\n%s\n", result[0], result[1]);
return 0;
}