|
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
|
|
Вывод значения двух переменных02.08.2011, 23:28. Показов 28739. Ответов 33
Метки нет (Все метки)
есть к примеру :
шаблон функции (параметры) { что то делаеться и return двух переменных} вызов : cout<<шаблон функции(аргументы); выводит только одну перемнную, как сделать что б выводило обе ?
0
|
|
| 02.08.2011, 23:28 | |
|
Ответы с готовыми решениями:
33
|
|
Заблокирован
|
||
| 03.08.2011, 00:56 | ||
|
Во-первыХ. термин "возвращаемое значение функции" определен в стандарте языка С++/С. То есть это вполне тконкретное определение, а не ваши какие-то собственные представления. Но даже если учесть, что вы не знаете стандарта языка С++/С, а исходите из ваших отрывочных сведений о языке, полученных из разных источников, то хотя бы следовало понимать значение слова "возвращать" с точки зрения обычной семантики разговорного языка. Возвращать можно то, что получид. Например, вы мне дали тысячу рублей, я их вам возвращаю. То есть что получил, то и можно вернуть. Теперь обратимся к вызову функции. У функции объявлены параметры. Эти параметры являются локальными переменными функции. Повторяю, если сразу же не поняли, локальными переменными функции. Их область жизни - это тело функции. В данном конкретном примере, когда вы передаете указатели на что-то, то эти указатели являются локальными переменнымпи функции. А все локальные переменные функции удаляются ее после завершения ее работы! То есть вы передали функции указатели, а она их вам не возвратила, а удалила! Чечтно говоря, мне более не хочется с вами вступать в дискуссию, потому что вы вполне строго определенные понятия языка С++/С, описанные в стандарте, заменяете своими обывательскими представлениями. Я настоятельно советую вам обратиться к стандарту и прочитать там, что такое "возвращаемые значения функции".
0
|
||
| 03.08.2011, 01:14 | |
|
Не по теме: ребята, хватит оффтопить и придираться к словам, хотите согнать зло? идите в раздел C# или Java там можно отрываться по полной;)
0
|
|
|
Заблокирован
|
||
| 03.08.2011, 01:50 | ||
|
Представьте себе вызов функции int *p1; int *p2; ... ... f( p1, p2 ); Можете вы по такому вызову определить, возвращает ли что-то функция или нет?! Очевидно, что по этому коду совершенно нельзя ничего сказать, меняет ли функция какие-то значения в вызывающем коде. Это аналогично тому отрицательному эффекту, когда в какой-то функции вы обращаетесь к глобальным переменным. То есть видя такой вызов функции, человек, читающий код, не может сказать, какие побочные изменения совершает функция. Вы даже не можете сказать, а удаляет ли функция память, на которую указывают указатели, или нет? Естественно вам надо будет сомнтреть описание функции. Если вы сделаете это поверхностно, увидев, что функция возвращает void, то вы можете подумать, что побочных эффектов у функции нет, так как обычно имеет место практика возвращать void, если результат работы функции не важен. Такой код очень тяжело читать, особенно если у подобной функции много параметров. Какие параметры создают побочные эффекты, а какие нет? Поэтому чтобы понять код, вам придется отвлекаться на детальное чтение описания функции. То есть такой код не является интуитивно понятным.
0
|
||
|
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
|
||||||
| 03.08.2011, 02:04 | ||||||
|
ну, если читаемость является определяющей, то такой
0
|
||||||
|
Заблокирован
|
|
| 03.08.2011, 02:07 | |
|
Я приведу пример из своей практике, когда работал в достаточно крупном проекте. Там была функция, которая возвращала void, а в качестве паракметра среди прочего принимала указатель на структуру, выделенную в динамической области памяти. В зависимости от других параметров данная структура определенным облразом менялась. Но была там одна ветка в этой функции, когда эта структура удалялась! И поэтому когда в вызывающем коде продолжали работать с указателем на эту структуру, то программа аварийно завершалась. И ошибка возникала не в том месте, где должна была бы возникнуть, а совершшенно в другом месте. Дело в том, что удаляемая память не срразу же перезаписывалась благодаря последующему запросу на выделение памяти, а потому некоторое время с ней можно было работать. Такую ошибку очень трудно найти! Так как читающий код, видя вызов такой функции, не мог предположить, что значение указателя станет недействительным. если бы эта функция вместо void возвращала бы тот же самый указатель, который ей передали в качестве параметра, то тогда бы можно было бы сделать проверку на то, что он равен NULL. Но этого не было сделано. В результате на поиск ошибки ушла целая неделя!
0
|
|
|
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
|
|
| 03.08.2011, 02:13 | |
|
могу привести в пример С-шную библиотеку NXOpen к UGS NX. там ооочень много ф-ций работает по такому принципу и довольно редко используется возврат какой-либо структуры, если возврат вообще есть.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
|
|||||
| 03.08.2011, 02:49 | |||||
|
Добавлено через 10 минут
1
|
|||||
|
Заблокирован
|
|||
| 03.08.2011, 20:36 | |||
|
Я вам приведу пример с указателем FILE в языке С. Можно было сделать так, что любая функция обращения к файлу не возвращала никакого значения, а все проверки вы делали с помощью другх функций, наподобие ferror, которым бы передавали этот указатель FILE. Что касается исходной задачи, то возникает вопрос: а почему что-то там рассчитывается для двух раздельных переменных?! Почему не для одной, или не для трех переменных? наверное эти переменные как-то связаны между собой? Допустим, они представляют собой точку плоскости. Тогда почему не использовать абстракцию Point, и не передавать ее функцию вместо двух отдельных переменных? Кроме того, а если нам нужно не менять исходные значения, а получить вычисленные выражения, чтобы их с чем-то там сравнить, то что тогда делать?! Все это приводит к выводу, что интерфейс данной функции крайне неудачный. Добавлено через 5 минут
0
|
|||
|
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
|
|
| 05.08.2011, 01:53 [ТС] | |
|
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
|
|||||||
| 05.08.2011, 02:12 | |||||||
1
|
|||||||
|
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
|
|
| 05.08.2011, 04:13 [ТС] | |
|
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
| 05.08.2011, 09:10 | ||||||
|
Вот так еще можно (обрабатывает и комплексные коэффициенты уравнения):
0
|
||||||
|
|
|
| 05.08.2011, 22:29 | |
|
Либо я сверхумный, либо все сверхглупые..., но что-то я не пойму... Кто не знает как вернуть указатель на несколько переменных или одну структуру или класс или массив или еще что-то!? Неужели для того чтобы это объяснить - надо написать 30 постов!?
0
|
|
|
Заблокирован
|
||
| 06.08.2011, 20:31 | ||
|
Что касается возврата указателя на несколько переменных, то этого я действительно не знаю! Указатель всегда указывает на один объект!
0
|
||
| 06.08.2011, 20:31 | |
|
Создать функции нахождения максимального значения из двух переменных
Как поменять значения двух переменных не используя дополнительную переменную? Обменять значения двух переменных используя третью (буферную) переменную Вычислить значения двух переменных, заданных указанными тригонометрическими выражениями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|