Передать в функцию указатель на указатель - 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
. - Функция завершает свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д