У меня есть несколько сортировочных функций с различными аргументами суммой, например:различного числа аргументов в функции указателе
sort1(double tab[], long n ) sort2(double tab[], long n, long p)
.
Мне нужно написать указатель funtion, в котором я могу назвать обе эти функции. Мне удалось сделать это, используя два указателя (один для функций с двумя аргументами и один для 3 аргументов), но ему сказали. Это должна быть одна функция. Это то, к чему я пришел раньше.
void s1(void (*fun[])(double*, long ), double tab[], long n)
void s2(void (*fun[])(double*, long, long), double tab[], long n)
И эти массивы с именами функций:
void (*funs1[])(double tab[], long n) = {bs, is, ss, hs};
void (*funs2[])(double tab[], long p, long n) = {qs, ms};
Как правило, в C вы будете писать одну функцию, которая принимает максимальное количество аргументов, а затем проверяет аргументы для значений защиты. Другими словами, если -1 или 0 является недопустимым значением для этого параметра, вы можете передать это недопустимое значение, чтобы сообщить функции, которую вы не хотите использовать. В функции проверьте значения охраны и выполните соответствующий сортировку. –
Итак, вы предлагаете добавить дополнительный аргумент для 'sort1', а не использовать его вообще? – photons3432
Вы могли бы сделать это таким образом или просто «sort2» проверить значение второго аргумента. Если это недопустимое значение, просто выполните операцию, выполняемую 'sort1'. –