Форум программистов, компьютерный форум CyberForum.ru

Параметр - C++

Восстановить пароль Регистрация
 
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
27.12.2009, 15:04     Параметр #1
int compare (Zakaz* arg1,Zakaz * arg2)
....
qsort (p, 3, sizeof (Zakaz),(int (*)(void *, void *))compare);
Объясните, пожалуйста,что означает запись 4-го параметра функции? И в прототипе compare необязательно объявлять параметры константами? Я не объявляла, хотя во всех примерах надо только не пойму зачем

Добавлено через 4 минуты
Zakaz-это тип структуры
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 15:04     Параметр
Посмотрите здесь:

C++ параметр, процедуры
Формальный параметр C++
C++ Параметр функции объект
C++ Параметр конструктора
Параметр функции C++
Параметр shmget C++
C++ Изменить параметр класса
Обмануть 1 параметр C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sich_Taras
14 / 14 / 1
Регистрация: 08.10.2009
Сообщений: 114
27.12.2009, 15:04     Параметр #2
Tani, четвертый параметр - имя функции которая сравнивает элементы при сортировке.
Пример:
1
12
13
14
15
16
17
18
19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* qsort example */
#include <stdio.h>
#include <stdlib.h>
 
int values[] = { 40, 10, 100, 90, 20, 25 };
 
int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}
 
int main ()
{
  int n;
  qsort (values, 6, sizeof(int), compare);
  for (n=0; n<6; n++)
     printf ("%d ",values[n]);
  return 0;
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,308
27.12.2009, 15:07     Параметр #3
1. Запись четвертого параметра означает, что compare, каково бы оно ни было (какая бы функция тут ни была реально указана), принудительно приводится к указателю на функцию, принимающую два параметра типа void* и возвращающую значение типа int.
2. Можно не объявлять как const, но "хороший" стиль программирования требует, чтобы параметр, если функция по логике своей работы его заведомо не изменяет, был объявлен как const. Это уберегает от возможных ошибок - даже если ты по ошибке попытаешься изменить const-параметр, компилятор сразу же выругается по этому поводу.
Yandex
Объявления
27.12.2009, 15:07     Параметр
Ответ Создать тему
Опции темы

Текущее время: 17:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru