Определение функции в функции допустимо? - C (СИ)
Формулировка задачи:
из документации gcc
Но работаю я в MSVS 2012.
И там такое не прокатывает... такие приколы могу быть только в GNU С или как-то надо VS2012 настраивать для этого???
foo (double a, double b) { double square (double z) { return z * z; } return square (a) + square (b); }
Решение задачи: «Определение функции в функции допустимо?»
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]); }
Объяснение кода листинга программы
- В коде определена функция
swap
, которая меняет местами два указателя на int. - В коде определена функция
bubble
, которая сортирует массив методом пузырька. - В функции
bubble
используется две вложенные циклы. - Внешний цикл выполняется
size - 1
раз, гдеsize
- размер массива. - Внутренний цикл выполняется
size - 1 - count
раз, гдеcount
- счетчик итерирующий по элементам массива. - Внутренний цикл проверяет, больше ли элемент по адресу
work[count]
элемента по адресуwork[count + 1]
. - Если это так, то вызывается функция
swap
для обмена элементов по адресамwork[count]
иwork[count + 1]
. - Функция
swap
меняет местами элементы по адресамelement1p
иelement2p
. - В функции
bubble
параметрwork
- это массив, который нужно отсортировать. - Параметр
size
- это размер массива. - Параметр
pFunction
- это функция, которая сравнивает два int и возвращает значение типаint
. - В функции
bubble
не используются переменные, поэтому нет значений переменных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д