1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
1 | ||||||
Как это читается по-русски22.10.2013, 01:55. Показов 4023. Ответов 35
Метки нет (Все метки)
0
|
22.10.2013, 01:55 | |
Ответы с готовыми решениями:
35
Как это читается Re: Как это читается по-русски На сколько это по-русски? Fretting precession - как по-русски? |
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
23.10.2013, 15:52 | 21 |
MyFunc и MyFunc[2] для вывода - одно и то же, так как имеют одинаковый тип - указатель на функцию определенного типа, который неявно приведется к bool. Просто MyFunc[2] содержит адрес, смещенный на 2 размера указателя от MyFunc. Поэтому мы можем вызвать MyFunc() и все будет норм, но при вызове MyFunc[2]() мы получим Runtime Error.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
23.10.2013, 16:14 | 22 | |||||
попробовал написать в VS2008
трудно назвать адресами функций(тем более что печать внутри разных функций дает один адрес) Может это стек
0
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
23.10.2013, 16:19 | 23 |
может дело в самой печати?
тогда как же передают функции в качестве параметров, одинаковыми эти "указатели" быть не могут уж точно
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
23.10.2013, 19:02 [ТС] | 24 | |||||
Если кто-то врубился и думает, что я и сам всё понял, то нет. Я пока еще нет. Я пока еще вообще ничего не понял. Да и с англ. я плохо дружу.
Еще мне интересен такой момент
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
23.10.2013, 19:20 | 25 |
MyFunc - это никак не переменная, это имя функции, которое в выражениях неявно может приводиться к адресу функции. Имена могут скрываться во вложенной области - int MyFunc скрывает имя функции, отныне имя MyFunc ссылается на переменную типа int. Но в одной и той же области не может быть определено несколько переменных с одним именем. Поэтому потом double MyFunc писать нельзя.
1
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
23.10.2013, 20:10 [ТС] | 26 | |||||
Осталось разобраться зачем преобразование к bool нужно.
я попробовал, не подошло для понимания.
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||||
23.10.2013, 21:12 | 27 | |||||
Ну это тоже в принципе понятно. Нам нужно неявное преобразование в bool для проверки в if.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
23.10.2013, 22:04 [ТС] | 28 |
тут параметр-то причем?
указатель в качестве параметра будет иметь другой адрес. и если имя функции- это имя функции и не переменная указатель - это не имя функции и является переменной. меня интересует преобразование имени функции, а не проверка указателя как переменной. Добавлено через 1 минуту в вашем пример ключевой check
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||||
23.10.2013, 23:12 | 29 | |||||
Так я про это и написал.
f и foo указывают на одно и то же. Upd На всякий случай: преобразование в bool относится не только к имени функции, оно относится ко всему, что имеет тип указателя на функцию. Преобразование имени функции в bool - лишь частный случай более общего преобразования из указателя на функцию в bool.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
23.10.2013, 23:42 [ТС] | 30 |
нет. непонятно. мне и первый код понятен. но не вижу тесной связи своего вопроса о функции с параметрами функции, даже несмотря на то, что они указывают на одно и то же.
это на притягивание за уши похоже между прочим. вы проверяете параметр на истинность. Этот параметр может быть и 0 и 1. отличие имени функции от указателя (который приходит как параметр) в том, что оно всегда, всегда только 1. насколько я понял. Добавлено через 14 минут это если сделали, значит с какой-то целью. вот и хотелось бы разобраться с какой целью вообще имя функции преобразовывать в bool, да и в 1 всегда.
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
23.10.2013, 23:45 | 31 |
Функция не единица. Распишу по шагам, что происходит в if.
1) имя функции преобразуется в указатель 2) указатель преобразуется в bool Например для переменных-указателей мы начинаем сразу с пункта 2. Для имен функций вначале выполняется шаг 1. Так как полученный указатель никогда не будет нулевым, то преобразование его в bool всегда будет давать true, поэтому оператор вывода показывает 1. И еще раз повторю - имя функции не преобразуется в bool. Оно преобразуется в указатель (который никогда не NULL). А уже указатель - в bool (это определено для любых указателей). А так как указатель будет никогда не NULL, то bool будет всегда true. А оператор вывода выводит true как единицу.
1
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
23.10.2013, 23:57 [ТС] | 33 |
я успел исправить функцию на имя функции.
Так-то теперь я всё понял.
0
|
ct0r
|
24.10.2013, 00:02
#34
|
0
|
daslex
|
24.10.2013, 00:07
[ТС]
#35
|
Не по теме: ct0r, вы сразу и написали об этом. (то, что в еще раз повторю). я пошутил, что впервые слышу.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
24.10.2013, 01:01 | 36 |
1
|
24.10.2013, 01:01 | |
24.10.2013, 01:01 | |
Помогаю со студенческими работами здесь
36
Adsense - как сделать по-русски? Как прописать строки по- русски Можно ли как определить как писать формулы в яцейки из VBA по русски или английски? Как по-русски обозвать назначение члена? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |