Передать в функцию указатель на указатель - 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. - Функция завершает свою работу.