|
1 / 1 / 0
Регистрация: 02.10.2023
Сообщений: 39
|
|||||||||||
Почему можно сделать ссылку int*& = p на указатель *p = arr, но нельзя напрямую int*& = arr?28.02.2024, 12:16. Показов 756. Ответов 12
Метки нет (Все метки)
Здесь ошибок нет
0
|
|||||||||||
| 28.02.2024, 12:16 | |
|
Ответы с готовыми решениями:
12
Написать функцию swap(int& a,int& b,int& c), которая изменяет значения параметров по правилу a->b->c->a Синонимы операций взятия адреса массива (arr и &arr) Напишите функцию f(int& m1, int& m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 28.02.2024, 12:36 | |
|
Сам arr нельзя изменять, а p можно.
0
|
|
|
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
|
||
| 28.02.2024, 12:48 | ||
|
int& x = arr; - это попытка передачи по ссылке всего статического массива, а не его первого элемента. Ошибка отражается компилятором, а '*' - это "ошибка из ошибки".
0
|
||
|
Заблокирован
|
||
| 28.02.2024, 13:36 | ||
|
Результат приведения массива в указатель - является prvalue. А на prvalue нельзя взять ссылку. Добавлено через 32 секунды В большинстве случаев.... )
1
|
||
|
фрилансер
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,997
|
|||||||||||||
| 28.02.2024, 13:50 | |||||||||||||
а тут
0
|
|||||||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 28.02.2024, 14:04 | |
|
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 28.02.2024, 14:34 | ||
|
0
|
||
|
Заблокирован
|
||
| 28.02.2024, 16:15 | ||
|
Взять хотя бы новую тему про функции с переменным числом аргументов. Проблема с арифметикой указателей В С так же нужно использовать макросы. Откуда всё это берется ? Думаю мусор в тырнете накапливается и не убирается ...
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 28.02.2024, 16:54 | |
|
0
|
|
|
фрилансер
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,997
|
|
| 28.02.2024, 17:39 | |
|
0
|
|
|
Заблокирован
|
||
| 28.02.2024, 17:49 | ||
|
Это трактовка. Неправильное название сущностей. А в данном случае, это совсем другое, это грубая ошибка, из-за незнания, или переноса знаний из одной области в другую, в которой (в переносимой области) человек не разбирается.
0
|
||
|
Вездепух
12927 / 6795 / 1819
Регистрация: 18.10.2014
Сообщений: 17,193
|
||||||||||||||||||||||
| 28.02.2024, 18:11 | ||||||||||||||||||||||
Сообщение было отмечено efewfedd как решение
РешениеВзглянем на совершенно аналогичный по своей сути и структуре пример. Так можно:
Потому что во втором примере ссылку типа double & нельзя привязать к объекту типа int. Это совершенно разные и никак не связанные друг с другом типы. А в первом примере мы сначала неявно преобразовываем значение типа int, кладем результат в объект типа double, а потом привязываем ссылку уже к объекту типа double. Здесь все нормально.В точности то же самое происходит и в ваших примерах. Вы пытаетесь привязать ссылку типа int *& к объекту типа int [4]. Так нельзя. Это совершенно разные типы, не имеющие ничего общего. Откуда у вас вообще могла возникнуть идея выполнить такую привязку? Зачем?--- Если бы ссылка была константная (т.е. "на константу"), то тогда и второй пример мог бы работать по схеме первого. Просто создание промежуточного (временного) объекта требуемого типа - для привязки ссылки к нему - делалось бы неявно. Так можно
Разумеется, еще раз, константная ссылка при этом привязывается не напрямую к правой части (это невозможно), а к промежуточному временному объекту правильного типа.
0
|
||||||||||||||||||||||
|
"C with Classes"
|
||||||||||||||||||||||
| 28.02.2024, 20:39 | ||||||||||||||||||||||
|
Ссылки были введены в основном для поддержки перегрузки операторов. Дуг Макилрой вспоминает, что однажды я объяснял ему некоторые проблемы, ка- савшиеся схемы перегрузки операторов. Он употребил слово «ссылка», после чего я, пробормотав «спасибо», выбежал из его кабинета, чтобы на следующий день появиться с практически готовым решением, которое и вошло в язык. Просто Дуг тогда напомнил мне об Algol68. В языке C аргументы всегда передаются функции по значению, а в случаях, когда передача объекта по значению не годится или слишком неэффективна, про- граммист может передать указатель на объект. При этом нотация должна быть удобной, поскольку нельзя ожидать, что пользователь всегда будет вставлять опе- ратор взятия адреса для больших объектов. Так, a= b - c; это общепринятая нотация, в то время как a = &b - &c; нет. Как бы то ни было, &b - &c уже имело в C определенную семантику, и менять ее я не хотел. После инициализации ссылка уже не может ссылаться ни на что другое. Иными словами, коль скоро она инициализирована, нельзя заставить ее ссы- латься на другой объект, то есть нельзя изменять привязку. В прошлом меня неприятно удивил тот факт, что в Algol68 предложение r1=r2 может означать либо присваивание объекту, на который ссылается r1, либо изменение значе- ния самой ссылки r1 (повторная привязка) в зависимости от типа r2. Я хотел уйти от таких проблем в C++. Если необходимы более сложные манипуляции, всегда можно воспользовать- ся указателями. Поскольку в C++ есть и ссылки, и указатели, ему не нужны сред- ства для различения операций над самой ссылкой и операций над объектом, на который она ссылается (как в Simula). Не нужен и дедуктивный механизм, при- меняемый в Algol68. Однако я сделал одну серьезную ошибку, разрешив инициализировать некон- стантную (без спецификатора const) ссылку значением, не являющимся lvalue. Например:
double, поэтому генерировалась временная переменная для хранения значения типа int, инициализированная значением ss. В связи с этим функция incr мо- дифицировала данную временную переменную, а вызывающая функция получа- ла неизмененное значение. Я разрешил инициализировать ссылки нееlvalue, чтобы сделать различие между вызовом по значению и по ссылке деталью реализации вызываемой функ- ции, которая вызывающей вообще неинтересна. Для константных ссылок это воз- можно, для неконстантных – нет. В версии 2.0 определение C++ было соответ- ствующим образом изменено. Следует отметить, что константную ссылку можно инициализировать не lvalue, а также lvalue, для типа которой требуется преобразование. В частности, это по- зволяет вызывать написанную на Fortran функцию с аргументом-константой:
тали важной возможность использовать ссылки как возвращаемые значения. Это позволило легко написать оператор взятия индекса для класса String:
ватели ведут себя ответственно. Бьерн Страуструп Дизайн и эволюция С++
0
|
||||||||||||||||||||||
| 28.02.2024, 20:39 | |
|
Помогаю со студенческими работами здесь
13
Объявление массива int *arr почему так Нюансы синтаксиса: что значит запись const vector<int>&a и vector<int>&a при передаче в функцию vector<int>sort? Как считать данные в vector<pair<int, pair<int, int>>> arr(m) ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|