Передать в функцию указатель на указатель - 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;
}

Объяснение кода листинга программы

  1. В функции swap принимаются два указателя на указатель char **a и char **b.
  2. Переменная len инициализируется значением, равным 0.
  3. Переменная buf инициализируется значением, равным *a.
  4. Значение указателя *a заменяется на значение указателя *b.
  5. Значение указателя *b заменяется на значение переменной buf.
  6. Функция завершает свою работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы