|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
||||||
В чем отличие int &f( ) от int f( )19.11.2015, 17:23. Показов 10795. Ответов 34
Метки нет (Все метки)
Что такое int & и чем отличается от int ?
0
|
||||||
| 19.11.2015, 17:23 | |
|
Ответы с готовыми решениями:
34
Напишите функцию f(int& m1, int& m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N Отличие int от int& |
|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
|
| 19.11.2015, 17:30 [ТС] | |
|
int & - это ссылка на int
Переформулирую, чем ссылка на int отличается от int? Не, тороплюсь я с вопросами. Надо немного подумать, подытожить, сформулировать...
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
| 19.11.2015, 17:34 | ||||||
Хочу заметить, что для меня если строка кода(или часть кода) потенциально может содержать UB при определённых действиях юзверга или пользователя - код UB.
0
|
||||||
| 19.11.2015, 17:34 | |
|
Не по теме: Кажись, пора писать F.A.Q. по темам ссылок, массивов, указателей и т.д.
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|||||||
| 19.11.2015, 17:44 | |||||||
|
Поповоду отличия если отличный учебное задание
2
|
|||||||
|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
||||||||
| 20.11.2015, 11:58 [ТС] | ||||||||
|
Есть несколько утверждений и вопросов. Все ли все ли утверждения верны? Как объясняется преобразование int& в int ?
0
|
||||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 20.11.2015, 12:11 | |||
|
Не по теме:
Добавлено через 34 секунды
0
|
|||
| 20.11.2015, 12:14 | |
|
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||||||||||||
| 20.11.2015, 12:21 | ||||||||||||||||
1)
2)
1) ссылка на int - это его псевдоним - погонялово))) Везде где зовут Черепа или использую Черепа - можно в уме подставить его настоящее имя. Ничего не изменится с точки объяснения себе, что происходит. 2) если функция возращает псевдоним - возвращаемое значение lvalue(рано вам еще понимать, что это) и туда куда пришёл псевдоним может к нему обращаться. В примере с массивом я показал как функция main записываем в псевдоним элеммента массива число и оно магическим образом появляется в самом массиве. Но у вас в коде UB( undefined behavior) не определёное поведение. Причина: 1) main вызывает функцию 2) в стек (место в памяти с которым программа работает быстрее - погуглите там) ложится адресс возврата (куда вернутся после возвращения выполнения тела функции) 3) создается в стеке параметры для функции (ей же ж пришли данные - их же ж куда-то надо поместить) 4) далее в коде ей нужна переменная - она её создает в стеке - int n; 5) и возвращает псевдоним на эту переменную, к примеру Картавый, в место откуда вызывалась функция 6) функция уже не нужна - вызываются деструкторы всех локальных объектов и параметров в стеке ( оин все удаляются) и сама функция отдаёт контроль main - и умирает. 7) main то не знает что Картавый сдох - и начинает запихивать в него к пример число или читать число с него - а это уже некрофилией попахивает. И с точки зрения разработчиков языка - такая некрофилия может вернуть ожидаемое число, может вернуть любое другое, программа может критически завершится, программа может заказать себе билеты в Лас Вегас и много много другое. Именно последнее означает UB.
1
|
||||||||||||||||
|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
|
| 20.11.2015, 12:34 [ТС] | |
|
Пока читаю предыдущий ответ, еще одно утверждение (забыл написать).
i, k - это некие абстракции, представленные в буквенном виде для пользователей языка с++, для облегченного запоминания адреса, типа и смысла ячейки адреса. Эти абстракции работают в по правилам с++ в соответствии с их типом и адресом, сами по себе при этом не являясь ни адресом, ни указателем, ни значением. Адрес и тип абстракций являются по сути единственно важными параметрами для компилятора и компоновщика.
0
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||||||
| 20.11.2015, 12:35 | ||||||
|
Прикол в том, что в случае
k = func('1') UB проявит себя с очень малой долей вероятности, так как значение скрывающееся за возвращаемой ссылкой сразу копируется в k (тип int), и если это произойдёт, то в дальнейшем k будет вполне валидным. А если мы напишем int& k = func('1') то будет копирована сама ссылка, и даже если в момент копирования значение было "валидным", то при дальнейшем её использовании никаких гарантий нет. В любом случае так писать нельзя.Ссылку возвращают, как правило, в методах класса (ссылку на поле класса) или когда это ссылка на один из параметров функции. В случае с классами, возвращать ссылку тоже опасно:
0
|
||||||
|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
||
| 20.11.2015, 12:38 [ТС] | ||
|
В коде поменял название функции, а в комментариях забыл.
0
|
||
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||
| 20.11.2015, 12:41 | ||
![]() Не по теме: вредный вы кошак
0
|
||
| 20.11.2015, 12:43 | |
|
0
|
|
|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
|||||||||||||
| 20.11.2015, 13:02 [ТС] | |||||||||||||
|
Т.е. допустим была в коде
0
|
|||||||||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 20.11.2015, 13:05 | ||
int разницы не будет. Для пользовательских типов возможны нюансы из-за наличия функций-членов. Можно будет вызвать только const версии.
0
|
||
|
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
|
||
| 20.11.2015, 14:24 [ТС] | ||
|
И в примере с массивами это есть. Но вообще, да. Искал-то разницу именно для типа int как выходного значения. Добавлено через 1 час 5 минут Всем спасибо, разобрался.
0
|
||
| 20.11.2015, 14:24 | |
|
Помогаю со студенческими работами здесь
20
Пусть объявлена функция void f(int i,int &j){.}. Параметр j является параметром Как передать 0 в функцию типа f (int, int&)
в чем разница между int a и int *a? Чем отличается int от signed int? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|