Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.99/75: Рейтинг темы: голосов - 75, средняя оценка - 4.99
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

временные переменные

24.07.2019, 23:13. Показов 16916. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите понять что такое временные переменные . временная переменная и локальная переменная это одно и то же?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2019, 23:13
Ответы с готовыми решениями:

Переворот строки, не используя временные переменные и не осуществляя полного прохода по всей строке
У вас есть переменная std::string str = "abcdefghijklmop";Напишите код переворота строки, не используя временные переменные и не...

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа, фамилия студента и екзаменационная...

Переменные,значение функции,вспомогательные переменные.
1)Даны переменные A,B,C.Изменить их значения,переместив их содержимое из A-в B,B-в C,C-в A,и вывести новые значения переменных A,B,C. ...

59
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
25.07.2019, 15:08
Студворк — интернет-сервис помощи студентам
Что-то я легко сдался.

A variable is introduced by the declaration of a reference other than a non-static data member or of an object.
Цитата Сообщение от rat0r Посмотреть сообщение
С чего это n — variable, если оно под показанное тобой же определение не попадает?
Ладно, давай с начала.
По процитированному определению не variable - это а,
Потому что a - это reference to a non-static data member.

Почему n - это не variable?

Если убрать часть про ссылку, то получаем
C++
1
A variable is introduced by the declaration of an object.
У нас есть declaration n? Есть. Оно object? Да.
Что не так?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
25.07.2019, 15:16
Цитата Сообщение от DrOffset Посмотреть сообщение
По процитированному определению не variable - это а,
Потому что a - это reference to a non-static data member.
В определении не написано "to".
Цитата Сообщение от DrOffset Посмотреть сообщение
Почему n - это не variable?
Это и есть вопрос на засыпку https://www.cyberforum.ru/post13738358.html
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2019, 15:32
Цитата Сообщение от pcmax Посмотреть сообщение
я услышал этот термин и не смог ничего путнего нагуглить
А в каком контексте это прозвучало (то что вы услышали)?
Это могло быть в контексте временного объекта, но с кривой терминологией (я повёлся, кстати)) .
А могло и в контексте промежуточной/го переменной/объекта. По ним temporary variable c++ в гугляндию билет)
?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
25.07.2019, 15:37
Цитата Сообщение от pcmax Посмотреть сообщение
а хранятся статические и глобальные переменные в одной области памяти. правильно?
В одной. Но область в бинаре зависит еще от того, как ты их инициализируешь.

Добавлено через 2 минуты
Цитата Сообщение от rat0r Посмотреть сообщение
опять scope с linkage путают...
Прекрасно понимаю разницу.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
25.07.2019, 15:39
Цитата Сообщение от rat0r Посмотреть сообщение
В определении не написано "to".
Точно.
Ссылка, которая член класса - не variable.

Цитата Сообщение от rat0r Посмотреть сообщение
Это и есть вопрос на засыпку
Замечательно. А ответ на него есть?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
25.07.2019, 15:40
Цитата Сообщение от DrOffset Посмотреть сообщение
Замечательно. А ответ на него есть?
Есть.
2
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
25.07.2019, 15:48
Цитата Сообщение от rat0r Посмотреть сообщение
Это и есть вопрос на засыпку
Может потому-что reference которая a non-static data member является реальным объектом(указателем), вто время как любая другая reference просто другое имя объекта, к которому привязана и сама не является объектом. (просто мысли вслух)
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
25.07.2019, 15:48
Цитата Сообщение от Vourhey Посмотреть сообщение
Прекрасно понимаю разницу.
И прекрасно умеешь это скрывать.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
25.07.2019, 15:53
Цитата Сообщение от rat0r Посмотреть сообщение
И прекрасно умеешь это скрывать.
Когда как, зависит от ситуации.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
25.07.2019, 15:54
rat0r, да, понятно, была похожая мысль, но у меня она недооформилась.

Члены класса начинают существовать вместе с объектом класса, сама по себе декларация члена никакого объекта не создает, естественно.
К тому же на русский очень проблематично перевести нюанс между object declaration и declaration of an object.

У меня только один вопрос. Они вроде бы как признали, что формулировки не совсем clear, но с 16 года ничего не изменилось?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
25.07.2019, 15:58
Цитата Сообщение от DrOffset Посмотреть сообщение
У меня только один вопрос. Они вроде бы как признали, что формулировки не совсем clear, но с 16 года ничего не изменилось?
Добавили метку "cwg".
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2019, 17:03
Цитата Сообщение от zayats80888 Посмотреть сообщение
Может потому-что reference которая a non-static data member является реальным объектом(указателем), вто время как любая другая reference просто другое имя объекта, к которому привязана и сама не является объектом. (просто мысли вслух)
То что ссылка может скрывать указатель не делает её объектом. Она не имеет собственного адреса, размера и пр. атрибутов типизированного объекта. Вместе с тем, с ней можно обращаться как с объектом. И это внутреннее противоречие не красит ситуацию. Спор на тему того, что из себя представляет ссылка неразрешим. Я бы считал ссылку "синтетическим" объектом доступа к типизированным объектам, но не отождествляемым с ними. То есть, синтаксический ли это псевдоним или обёртка над указателем - зависит от ситуации, реализации, левой ноги компилятора. Но спорить на эту тему не стану. Ссылка удобная штука, но теоретически плохо определена. А невозможность отложенной инициализация привела, вдобавок, к порождению "языка ссылок" внутри языка С++. Это похоже на язык цветов в средние века. Внешность (написание), смысл и аромат гармонично дополняют друг друга.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
25.07.2019, 20:25  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Она не имеет собственного адреса, размера и пр. атрибутов типизированного объекта.

этот момент меня также тревожит. если нетрнудно то зайдите в специально созданную тему на эту тему и объясните про ссылки. прям очень просим.





и к стати, к чему пришли в споре о временных переменных? они существуют?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2019, 20:48
Цитата Сообщение от pcmax Посмотреть сообщение
этот момент меня также тревожит. если не трудно то зайдите в специально созданную тему на эту тему и объясните про ссылки. прям очень просим.
Я тут далеко не супер крутой) Высказать мнение, - могу, но с удовольствием и сам послушаю. Ссылка была себе синтаксическим сахаром до тех пор пока не появились средства отличающие т.н. ссылочный тип от типа, собственно, целевого объекта. После этого стало ясно, что у ссылок появился как бы тип... Но тогда ссылка типизированный покемон объект, но без собственного объекта. Потом поломали абстракцию объекта. Теперь это не кусок памяти с форматом и набором допустимых операций, а некое повествования о том, что это всё что мы захотим считать таковым, каковым захотим считать. Зато ссылке теперь комфортно. Она может быть как бы объектом, но не объектом. Красота. Тут как раз говорили о том не назвать ли ее переменной (когда она - поле класса). Это по теме, вроде.

pcmax, простые работники необъятных математических нив успешно работают с готовыми абстракциями, но боже сохрани им позволить их создавать (абстрагировать). Обычная ситуация, когда абстракцию ломают, делят внутри себя, создают несовместные модели и т.п.
Что касается ссылок, то с практической точки зрения они полезны. Операторы призванные их возвращать - работают. А остальные вещи вполне реализуемы указателями. Было время когда Б.Страуструп не рекомендовал передавать неконстантные ссылки в функции, отдавая предпочтение указателям. Мотивировал тем, что в месте вызова (не глядя в определение функции) нельзя быть уверенным в том, будет ли модифицирован передаваемый аргумент.

pcmax, так как насчёт контекста того разговора, что вы услышали (про временные переменные)?
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
25.07.2019, 20:49
Цитата Сообщение от pcmax Посмотреть сообщение
временная переменная и локальная переменная это одно и то же?
Это малость разные категории, как часы - электронные или настенные ))
Теперь к делу! Временная переменная - это локальная переменная, используемая для сохранения результатов промежуточных вычислений на короткое время. Бывает еще и временнАя переменная. Она представляет время (астрономическое, относительное, модельное и т.д.)
PS: Есть еще понятие временного объекта, но вы о нем вроде не спрашиваете...
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
25.07.2019, 21:14  [ТС]
Цитата Сообщение от jugu Посмотреть сообщение
Временная переменная - это локальная переменная,

а как она выглядит?
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
25.07.2019, 21:22
Разве в С++ есть понятие временная переменная?
Объекты бывают временнымм, про временные переменные вообще впервые слышу(читаю)...
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
25.07.2019, 21:29
Цитата Сообщение от pcmax Посмотреть сообщение
а как она выглядит?
C++
1
2
3
4
5
6
7
{
    ...
    int tmp = a;
    a = b;
    b = tmp;
    ...
}
1
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
25.07.2019, 21:32
Цитата Сообщение от pcmax Посмотреть сообщение
а как она выглядит?
Здесь речь идет о том, что как она выглядит - определяете вы. И контекст ее "временности" тоже определяете вы.
Например
C++
1
2
3
4
5
6
void swap(int & a, int & b)
{
    int tmp = a;
    a = b;
    b = tmp;
}
Здесь tmp - это временная переменная.
Впрочем, этот вопрос не относится к С++, скорее к общей теории программирования и алгоритмов.

Цитата Сообщение от pcmax Посмотреть сообщение
и к стати, к чему пришли в споре о временных переменных? они существуют?
В С++ как самостоятельное понятие - нет.
Упоминания в стандарте временных переменных используют контекст синонимичный временным объектам. Пример вам привели в первом ответе темы.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2019, 22:09
Цитата Сообщение от jugu Посмотреть сообщение
Временная переменная - это локальная переменная
Хех... Я бы согласился, - по духу оно мне близко, но получается нестыковка. Недавно обсуждали тему о том, считается ли ре-инициализированный объект на месте "старого" при помощи placement new старым или это нужно считать новым объектом. Я боролся за то, что это старый объект. Стандарт говорит о том, что он новый и по своему прав.
Это я к тому, что на глобальном объекте (неконстантном, не имеющем ссылочных полей и пр. - см. стандарт) можно же провернуть этот финт. Запустить деструктор, а потом ре-инициализировать. Получится, что нелокальный объект умер, а родился другой - новый объект.
Это я к тому, что назвав такой объект новым (ломая старую и добрую абстракцию объекта как куска памяти, адреса и типа) имеем последствия. Получается, что временным может быть и глобальный объект. Весело?
Или я не прав? Может placement new на указателе на память (статическую) для (неконстантного и т.п.- подчёркиваю) глобального объекта, - незаконная операция?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2019, 22:09

Теория, Временные объекты
Прошу ответить на пару вопросов. Конкретный вопрос: В тексте while (Pos != istream_iterator<string>()) {...} происходит ли...

Ссылки на временные объекты
Здравствуйте! В процессе экспериментов с С++ появились некоторые непонятки. Рассмотрим код: #include <iostream> using...

Временные объекты и ссылки
При инициализации ссылки временным объектом, ссылка должна быть либо rvalue-ссылкой, либо lvalue-ссылкой на const. Однако, несмотря на...

Необязательные временные объекты
Помогите с задачкой: Класс Car содержит модель автомобиля. Функция Find определяет, присутствует ли указанная модель в списке...

Временные объекты встроенного типа
Привет! пытаюсь углубляться в C++, решил почитать книгу Саттера, на первом примере, остановился и запутался, там в конце, в виде советов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru