|
12 / 10 / 0
Регистрация: 01.07.2013
Сообщений: 62
|
||||||
Безымянный аргумент функции03.07.2013, 12:48. Показов 7248. Ответов 51
Метки нет (Все метки)
функция принимает аргумент, но у него нет имени
...
0
|
||||||
| 03.07.2013, 12:48 | |
|
Ответы с готовыми решениями:
51
Вычислить значение функции аргумент которой вычисляется из другой кусочно заданной функции Беззнаковый аргумент функции Не читается аргумент функции |
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
| 04.07.2013, 12:11 | ||||||
|
AntonChik, собственно для перегрузки такое и делают в частности. Например:
2
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 04.07.2013, 12:11 | ||
|
0
|
||
|
|
|||
| 04.07.2013, 12:24 | |||
|
2
|
|||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||||||||
| 04.07.2013, 12:52 | |||||||||
|
Это все понятно, что, если это нас не касается, то и хрен с ним. Но охота разобраться зачем оно вообще.
Вопрос по прежнему открыт. Зачем существуют параметры без имени?
0
|
|||||||||
|
|
||
| 04.07.2013, 13:10 | ||
|
Добавлено через 7 минут Именованный и безымянный параметры играют роль исключительно внутри функции. В точке вызова функции нет никакой разницы, будет ли внутри вызываемой функции параметр иметь имя, или нет. В точке вызова важен только тип параметра, чтобы знать, как его правильно передать. А как этот параметр будет называться внутри функции - не играет никакой роли, т.к. в точке вызова нам не нужно обращаться к этому параметру (а именно для этого нужно имя переменой). Вернее, обращаться нужно в момент передачи параметра, но обращаемся к нему не по имени, а, грубо говоря, по порядковому номеру внутри круглых скобок в строгом соответствии с программными соглашениями (calling convenience)
2
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 04.07.2013, 13:20 | |
|
Но самое-то интересное - можно ли получить внутри функции значение параметра, переданного без имени? Весь сыр-бор из-за этого.
0
|
|
|
12 / 10 / 0
Регистрация: 01.07.2013
Сообщений: 62
|
|||||||
| 04.07.2013, 13:33 [ТС] | |||||||
![]()
0
|
|||||||
|
|
||
| 04.07.2013, 13:43 | ||
|
Если же нужно обратиться к неименованному параметру без задания имени, то в общем случае ответ - "никак". В частных случаях можно. Но при этом нужно понимать, по каким правилам передаются параметры. Но код всё равно может считаться рабочим только в рамках одного компилятора. Так, например, если параметры передаются через стек, то через адрес одного параметра можно получить адрес другого параметра. Но при этом нет никакой гарантии, что параметр, который пришёл через стек, компилятор не переложил внутри функции на регистр. Разумно предположить, что с безымяным параметром так желать ни к чему (поскольку регистров мало, а тратить их на ненужный параметр - расточительство). Если изначально параметр пришёл на регистре, то очевидно, что через адрес другого параметра мы наш безымяный параметр уже не прочтём. Т.е. можно обратиться только при помощи ассемблерных конструкций напрямую к регистру. При этом точно так же у нас нет никакой гарантии, что компилятор не переиспользовал регистр по своим нуждам. Это действие уже вероятное, т.к. незачем держатьрегистр под неиспользуемую переменную, его лучше заиспользовать под полезные нужды
2
|
||
| 04.07.2013, 13:53 | |
|
Не по теме: кстати раз уж зашел разговор о всяческих извратах, то у меня возник вопрос, а есть ли способ в коде дать конкретному компилятору понять, что из нескольких веток ему предстоит откомпилить лишь одну, предназначенную именно ему?)
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 04.07.2013, 14:13 | |
|
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||||||
| 04.07.2013, 15:38 | |||||||||||||
|
повторю вопрос
Добавлено через 26 минут а ну да там инт стоит сдвиг будет на 20 байт, при int 4байта но откуда 5? Добавлено через 9 минут Вот вам еще одно баловство доступ к приватной переменной
правда кому и зачем может понадобится я не знаю
0
|
|||||||||||||
| 04.07.2013, 15:52 | ||||||
|
В том конкретном коде смещение в 20 байт взялось нипочему, так уж на платформе, на которой этот код выдал ожидаемый результат, осуществляется передача аргументов при вызове функций.
На Mac OS X, например, я не нашел такого смещения, которое дало бы адрес неименованного аргумента. Пробовал от -512 байт до 512. Про нарушение спецификаторов доступа, в этом нет ничего особенного, если понимать внутренний layout объектов.
P.S. при наличии в классе виртуальных функций такой подход в лоб не пройдет.
0
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||||||||
| 04.07.2013, 16:02 | ||||||||||||
На VS2012 x64 получилось следующее:
0
|
||||||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||||||||||||
| 04.07.2013, 16:09 | |||||||||||||||||||
![]() Вполне может быть что аргументы идут через регистр и со стека ты их не достанешь да и локальные переменные могут в регистре лежать единственно что могу предположить, это если пользуешь чужой класс но завтра реализация класса изменится и программа летит Все эти адресные арифметики штука очень "острая" при неправильном использовании легко можно "порезаться" Добавлено через 2 минуты вчера ты писал
не находишь?
0
|
|||||||||||||||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 04.07.2013, 16:14 | |
|
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 04.07.2013, 17:15 | |||
|
Это:
Добавлено через 2 минуты
0
|
|||
| 04.07.2013, 17:15 | |
|
Передача функции в аргумент Класс как аргумент функции Не правильно передаю аргумент функции Локальные переменные в функции и её аргумент Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|