Передать в функцию указатель на указатель - C (СИ)
Формулировка задачи:
Добрый день,
В main я создаю указатель на строку, память для которой хочу выделить внутри другой функции. Освободить в main.
Вопрос: как правильно передать указатель на указатель?
#define STRING_BLOCK_SZ 8 void igets(char **In_string) { *In_string = (char *)malloc(STRING_BLOCK_SZ * sizeof(char)); } int main() { char *In_string; // Указатель на строку igets(&In_string); // Так я передам указатель на первый элемент строки, а как передать указатель на указатель? free(In_string); return 0; }
Решение задачи: «Передать в функцию указатель на указатель»
textual
Листинг программы
void swap(char **a, char **b) { int len; char *buf = *a; *a = *b; *b = buf; }
Объяснение кода листинга программы
- В функции
swap
принимаются два указателя на указательchar **a
иchar **b
. - Переменная
len
инициализируется значением, равным 0. - Переменная
buf
инициализируется значением, равным*a
. - Значение указателя
*a
заменяется на значение указателя*b
. - Значение указателя
*b
заменяется на значение переменнойbuf
. - Функция завершает свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д