Передать в функцию указатель на указатель - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, В main я создаю указатель на строку, память для которой хочу выделить внутри другой функции. Освободить в main. Вопрос: как правильно передать указатель на указатель?
Листинг программы
  1. #define STRING_BLOCK_SZ 8
  2. void igets(char **In_string)
  3. {
  4. *In_string = (char *)malloc(STRING_BLOCK_SZ * sizeof(char));
  5. }
  6. int main()
  7. {
  8. char *In_string; // Указатель на строку
  9. igets(&In_string); // Так я передам указатель на первый элемент строки, а как передать указатель на указатель?
  10. free(In_string);
  11. return 0;
  12. }

Решение задачи: «Передать в функцию указатель на указатель»

textual
Листинг программы
  1. void swap(char **a, char **b)
  2. {
  3.     int len;
  4.     char *buf = *a;
  5.     *a = *b;
  6.     *b = buf;
  7. }

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

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

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


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

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

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы