C/C++
Ссылки и указатели
Доброго времени суток! Поясните, пожалуйста, чего такого могут ссылки, чего нельзя сделать с помощью указателей? Почему иногда нужно использовать именно ссылки, но нельзя указатели? Заранее спасибо.
Технической разницы нет
Есть разница в синтаксисе. Ссылки - плюсовая фишка и не работает в си. Также когда передаёшь указатель на структуру или класс, то доступ к внутренним элементам, осуществляется через оператор ->, его вроде планируется убрать в 23 версии языка. В случае с ссылками всё действия происходят через оператор точка. Также, если работаешь с переменной, переданной как указатель, её надо разыменовывать приставкой *, а с ссылками это делать не надо. Короче, если пишешь на С++, то надо использовать ссылки, а если на Си то выбора нет - только указатели
Есть разница в синтаксисе. Ссылки - плюсовая фишка и не работает в си. Также когда передаёшь указатель на структуру или класс, то доступ к внутренним элементам, осуществляется через оператор ->, его вроде планируется убрать в 23 версии языка. В случае с ссылками всё действия происходят через оператор точка. Также, если работаешь с переменной, переданной как указатель, её надо разыменовывать приставкой *, а с ссылками это делать не надо. Короче, если пишешь на С++, то надо использовать ссылки, а если на Си то выбора нет - только указатели
Для доступа к данным по указателю его следует разыменовать либо использовать косвенное обращение. Ссылка позволяет обращаться к данным по имени и напрямую.
Ничего, просто удобнее в обращении
"Поясните, пожалуйста, чего такого могут ссылки, чего нельзя сделать с помощью указателей? Почему иногда нужно использовать именно ссылки, но нельзя указатели? "
я бы спросил так:
"чего такого (опасного) могут указатели, что лучше отказаться от их использования везде, где возможно".
я бы спросил так:
"чего такого (опасного) могут указатели, что лучше отказаться от их использования везде, где возможно".
Алексей Скороходов
А если бы спросили так, как бы вы ответили?))
Чего в указателях опасного?
Чего в указателях опасного?
Алексей Скороходов
Я например стараюсь их лучше выучить чтоб использовать для экономии памяти.
"Поясните, пожалуйста, чего такого могут ссылки, чего нельзя сделать с помощью указателей? "
Функционально, ничего. С точки зрения семантики не получится переопределить некоторы операторы, другие не получится определить эффективно и пр, то есть не получится создавать пользовательские типа с полным функционалом.
Функционально, ничего. С точки зрения семантики не получится переопределить некоторы операторы, другие не получится определить эффективно и пр, то есть не получится создавать пользовательские типа с полным функционалом.
Например, ссылка на rvalue или ссылка на константу могут продлевать время жизни временного объекта.
Примеры есть здесь: https://en.cppreference.com/w/cpp/language/reference_initialization#Lifetime_of_a_temporary
Примеры есть здесь: https://en.cppreference.com/w/cpp/language/reference_initialization#Lifetime_of_a_temporary
Похожие вопросы
- Если указатель уже объявлен как указатель то при повторном объявлении мы обращаемся не к указателю а к адресу ссылки?
- Различие указателей int *; и char *;
- Не совсем понял как работает C++ код с указателями
- Передача в метод класса указателя на функцию C++
- C/C++ Как устроена память, выделенная для структуры с указателем *next?
- C++ указатели и ссылки
- В чём причина? Понторезов с очень высшим образованием слушать не буду. Только тех, кто практикует работу с указателями вС++
- Указатели. Типизированные указатели. Указатели та массивы. Функции пользователя
- Указатели. Программирование с использованием динамических двухмерным масивов.
- Если указатель работает с указателем повторное объявление указателя не является не обходимым?
Откуда дровишки? Сильно сомневаюсь, комитет очень сильно старается не ломать компилируемость существующего кода, а тут поломается слишком много. Смахивает на бред, извините.