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

Указатели на функции + typedef - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++. Массивы. Указатели. Определить кол-во и сумму отрицательных элементов http://www.cyberforum.ru/cpp-beginners/thread877329.html
Ребят, срочно помогите пожалуйста! Завтра зачёт по с++, задачи будут примерное такие: 1) Написать прогу, которая заполняет случайным образом массив А (n<30) целочисленными значениями. Определить кол-во и сумму отрицательных элементов . Массив вывести в файл. (Использовать указатели для работы с массивом) Народ, очень прошу, выручайте!
C++ Запрет на ввод букв Помогите пожалуйста сделать запрет на ввод букв: #include "stdafx.h" #include <cstdlib> #include <iostream> #include <math.h> #include <conio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread877326.html
курсач (дискретная математика, пузырьковая сортировка) C++
Здравствуйте! нужна курсовая работа на тему "Пузырьковая сортировка". Вместе с графикой. Помогите пожалуйста.
C++ Не могу исправить ошибки. Заранее спасибо
Задание: Программа реализует двусвязный список. Функции: 1) Добавление элемента на заданую пользователем позицию; 2) Удаление элемента по ключу; 3) Вывод двусвязного списка на экран; 4) Поиск элемента по ключу. #include <iostream.h> #include <stdlib.h> #include <string.h> #include <windows.h> //#include "stdafx.h" #include <conio.h> using namespace std; class Comp
C++ Ввод имени в программу с клавиатуры, содержащее 2 или более слова http://www.cyberforum.ru/cpp-beginners/thread877280.html
Помогите, пожалуйста, сделать возможным ввод имени, состоящего из нескольких слов. Например, пункт назначения "Москва" читается без проблема, а "Нижний Новгород" нет - второе слово "Нижний" распознаётся уже как номер рейса. Наверное, это нужно делать через getline, не могу понять как На фотографии-изначальное задание #include <iostream> #include <cctype> #include <cstring> #include...
C++ Блок-схема как её рисовать ? Народ !!! нужна помощь... как нарисовать блок схемы на функции : void output( Student * students, int N, ostream & stream ) { for( int i = 0; i < N; ++ i ) stream << ( i + 1 ) << ". " << students.name << "; " << students.age << endl; } подробнее

Показать сообщение отдельно
CROSP
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 114
24.05.2013, 21:44  [ТС]     Указатели на функции + typedef
Спасибо большое , я кажется все понял !!!!
Вот еще вопрос по памяти . Смотрите вот пример


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
int cmp_student_by_name(const void *val1, const void *val2){
  if (val1==NULL || val2==NULL){
        return -1;
    }
 
    /* Приведение типов указателей const void
     * к типу student.
     */
    student *s1 = (student*)val1;
    student *s2 = (student*)val2;
 
    // Вызов strcmp() для сравнения строк
    return strcmp(s1->name, s2->name);
}
 
есть функция поиска в в списке .
 
void *list_find(list_head *list, const void *val){
    if (list==NULL || val==NULL || list->func_cmp==NULL){
        return NULL;
    }
 
    list_node *current = list->head;
 
    /* Проход по списку с вызовом функции сравнения func_cmp */
    while (current!=NULL){
        int res = list->func_cmp(val, current->data);
        
        if (res==0){ // Элементы списка равны
            return current->data;
        }
        current = current->next;
    }
    return NULL;
}
 
 
вот вызываем допустим ее 
в меине .
 
 if (strcmp(cmd, "find")==0){
            printf("\nEnter student name:");
            scanf("%s", x.name);
 
            student *s;
 
            // Установка функции сравнения элементов
            // списка cmp_student_by_name()
            // Вызов функции поиска.
            list.func_cmp = &cmp_student_by_name;
            s = (student*)list_find(&list, &x);
 
            if (s!=NULL){
                printf("\nFound: ");
                printf("%s\t", s->name);
                printf("%d\t", s->order);
                printf("%f\n", s->average_point);
            } else {
                printf("Student does not found\n\n");
            }
        }
Функция сравнения объявлена перед меином .
То есть выходит при запуске программы данная функция уже находится в памяти ??
Так как мы берем ее адрес . А затем вызываем саму функцию поиска , но в ней есть проверка на нул , то есть все таки данная функция уже весит в памяти(cmp_student_by_name) ? Так же ?
 
Текущее время: 14:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru