Определение функции в функции допустимо? - C (СИ)

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

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

из документации gcc
foo (double a, double b)
{
double square (double z) { return z * z; }
 
return square (a) + square (b);
}
Но работаю я в MSVS 2012. И там такое не прокатывает... такие приколы могу быть только в GNU С или как-то надо VS2012 настраивать для этого???

Решение задачи: «Определение функции в функции допустимо?»

textual
Листинг программы
void swap(int *element1p, int *element2p);
 
void bubble(int work[], const int size, int (*pFunction)(int a, int b))
{   int pass, count;
 
    for (pass = 1; pass < size; pass++)
        for (count = 0; count < size - 1; count++)
            if ((*pFunction)(work[count], work[count + 1])) swap(&work[count], &work[count + 1]);
}

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

  1. В коде определена функция swap, которая меняет местами два указателя на int.
  2. В коде определена функция bubble, которая сортирует массив методом пузырька.
  3. В функции bubble используется две вложенные циклы.
  4. Внешний цикл выполняется size - 1 раз, где size - размер массива.
  5. Внутренний цикл выполняется size - 1 - count раз, где count - счетчик итерирующий по элементам массива.
  6. Внутренний цикл проверяет, больше ли элемент по адресу work[count] элемента по адресу work[count + 1].
  7. Если это так, то вызывается функция swap для обмена элементов по адресам work[count] и work[count + 1].
  8. Функция swap меняет местами элементы по адресам element1p и element2p.
  9. В функции bubble параметр work - это массив, который нужно отсортировать.
  10. Параметр size - это размер массива.
  11. Параметр pFunction - это функция, которая сравнивает два int и возвращает значение типа int.
  12. В функции bubble не используются переменные, поэтому нет значений переменных.

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


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

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

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