|
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 17
|
|
Вывод значения двух переменных02.08.2011, 23:28. Показов 28762. Ответов 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,981
|
|||||
| 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,981
|
|||||||
| 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 | |
|
Создать функции нахождения максимального значения из двух переменных
Как поменять значения двух переменных не используя дополнительную переменную? Обменять значения двух переменных используя третью (буферную) переменную Вычислить значения двух переменных, заданных указанными тригонометрическими выражениями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|