Язык: CСвертывание строки в C с помощью указателей?
Я пытаюсь запрограммировать функцию C, которая использует заголовок символ * strrev2 (Const символ * строка) в рамках подготовки к собеседованию, ближайший (рабочий) раствор ниже, однако я хотел бы получить реализация, которая не включает malloc ... Возможно ли это? Поскольку он возвращает символ, если я использую malloc, свободный должен использоваться в другой функции.
char *strrev2(const char *string){
int l=strlen(string);
char *r=malloc(l+1);
for(int j=0;j<l;j++){
r[j] = string[l-j-1];
}
r[l] = '\0';
return r;
}
[EDIT] Я уже писал реализации с использованием буфера и без угл. Спасибо, что!
Вы можете бесплатно 'string', если он больше не нужен, который не оставит вас с того, чтобы освободить только одну вещь. Однако освобождение его здесь считается очень плохим программированием, так как это неожиданный побочный эффект. –
Вы также можете использовать статический символ **, который указывает на указатель на область памяти, которую вы выделяете при первом вызове, и повторно использовать по мере необходимости на последующих. Я бы не использовал этот подход, потому что вы не будете знать, когда последний звонок будет таким, чтобы вы не могли освободить память, но это могло бы произвести впечатление на них в интервью. :) – Uffe