Вам необходимо динамически распределить память, используя malloc()
, чтобы вернуть и затем отменить выделение памяти, используя free()
.Возвращать локальную переменную из функции было бы неправильно, потому что эта память находится в стеке и не будет доступна, когда функция завершит свое выполнение.
Вот ваш рабочий код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(char* tokens[10])
{
char* word = malloc( 10 );
strcpy( word, "Hello!" );
tokens[0] = word;
}
int main()
{
char* tokens[10];
func(tokens);
printf("%s", tokens[0]);
free( tokens[0] );
return 0;
}
Вывод:
Hello!
Вот живой пример: https://ideone.com/LbN2NX