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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа для вычисления количества дней между двумя датами http://www.cyberforum.ru/cpp-beginners/thread183914.html
Добрый день!Ни как не получаеться написать в си программу, которая будет уметь считать дни между двумя заданными датами, без использования циклов...Начиная с 1 .1.1 где до 6.1.1584 каждые четыре года высокосный год, даты сс 7-16.1.1584 года не существует, а с 17.1.1584 года кажды 4 год высокосный, кроме тех которые деляться на 100 но все которые деляться на 400 являються высокосными.Хотя бы общий...
C++ Организация программы. Здравствуйте. Как организовать программу? Дана матрица с ней производится ряд операций. После этих операций матрица проверяется на определенное условие и если оно не выполняется то эти операции производятся уже с изменившейся матрицей, и так пока условие не будет выполнено. При попутке организовать это с помощью конструкции while получается что он всегда работает с первоначальной матрицей а не с... http://www.cyberforum.ru/cpp-beginners/thread183901.html
C++ Циклы
Дан номер телевизионного канала(от 1 до 5). Вывести на экран наиболее популярные программы заданного канала.
Создать матрицу C++
Помогите пожалуйста! Нужна матрица размерностью состоящая из элементов 16-ой системы.
C++ Непонятка с минусами в double http://www.cyberforum.ru/cpp-beginners/thread183879.html
такая шляпа вот, почему-то, если if(9.8 - 7.6 == 2.2) cout << "TRUE" << endl; else cout << "FALSE" << endl; выводит FALSE, однако, если if(9.5 - 1.2 == 8.3) cout << "TRUE" << endl; else
C++ тоже надо решить с указателями и ссылкой Дан массив целых. Составить функцию remove_if, удаляющую из него все элементы, удовлетворяющие условию, передаваемому в качестве параметра подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
30.10.2010, 20:00     Указатель на функцию
Мда...
Значит, автор, слушай меня внимательно
Во-первых в экзешнике тело функции есть набор инструкций. У тебя ОДНА И ТА ЖЕ функция. Один набор инструкций. В экзешнике в ней нет безусовных переходов, то есть здесь всё чисто, она выполняется одинаково быстро, что в первом, что во втором случае. Я добавил в твой код такую строчку:
Код C++
1
2
printf ("= %x\n", aaa);

И увидел вывод:
Код C++
1
= 401390

ПОнял? По адресу 401390 расположена твоя функция fff

(Да, в экзешнике никаких имён. Только указатели на функцию. У тебя повторюсь НЕ ДВЕ ОДИНАКОВЫХ функции, а ОДНА)

Теперь дальше. Я так понял, ты замеряешь временное расстояние между началом и концом цикла. С эжтим не сталкивался, скажу только, что время это НЕ чистое, а грязное, ибо в системе существуют другие процессы и они вклиниваются в вызовы твоей функции и поэтому она вызывается неодинаково быстро в разных случаях. Это ты прочтёшь, а вот что ты увидеть можешь сам:

Вызывается она ИЗ РАЗНЫХ МЕСТ. Впервом случае она вызывается из адреса 401426
а во втором 401480 (это у меня на компьютере, у тебя результат может быть другим)

Понял, о чём я? Разница между 401426 и 401390 МЕНЬШЕ. чем между 401480 и 401390
Поэтому в первом случае функция вызывается быстрее, чем во втором (это мой компилятор так скомпилили, а у тебя по-другому, но думаю, мысль, понятна.)

Ща спопробую приложить скриншот отладчика и всё поймёшь
Миниатюры
Указатель на функцию  
 
Текущее время: 16:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru