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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tani
25 / 25 / 1
Регистрация: 27.12.2009
Сообщений: 82
#1

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

27.12.2009, 15:04. Просмотров 344. Ответов 2
Метки нет (Все метки)

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++
Параметр shmget C++
Необязательный параметр функции C++
Функция не принимает параметр C++
C++ Конструктор, принимающий параметр
Обмануть 1 параметр C++
C++ Параметр функции [out]
C++ Const параметр
Значение из функции в параметр 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
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
27.12.2009, 15:07     Параметр #3
1. Запись четвертого параметра означает, что compare, каково бы оно ни было (какая бы функция тут ни была реально указана), принудительно приводится к указателю на функцию, принимающую два параметра типа void* и возвращающую значение типа int.
2. Можно не объявлять как const, но "хороший" стиль программирования требует, чтобы параметр, если функция по логике своей работы его заведомо не изменяет, был объявлен как const. Это уберегает от возможных ошибок - даже если ты по ошибке попытаешься изменить const-параметр, компилятор сразу же выругается по этому поводу.
Yandex
Объявления
27.12.2009, 15:07     Параметр
Ответ Создать тему
Опции темы

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