Другие языки программирования и технологии

Указатели и ссылки в c++

Объясните пожалуйста что значит такая конструкция *&arr в c++
EH
Elnur Hasanov
128
Это передача указателя в функцию по ссылке в тех случаях, когда он является выходным параметром. Например:

#include <iostream>
using namespace std;
void find_ref(int*& begin, const int* end, int* box, int value) {
cout << "Вызов *& - Успех! >>> ";
do if (*begin == value) break; while (++begin != end);
}
void find_ptr(int* begin, const int* end, int* box, int value) {
cout << "Вызов * - Неудача! >>> ";
do if (*begin == value) break; while (++begin != end);
}
void show(const int* begin, const int* end) {
do cout << *begin << ' '; while (++begin != end);
cout.put('\n');
}
int main() {
int box[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
auto value = 5;
auto end = box + size(box);

setlocale(LC_CTYPE, "Russian");
puts("Вывести из массива все элементы начиная со значения 5");

auto begin_ref = box;
find_ref(begin_ref, end, box, value);
show(begin_ref, end);

auto begin_ptr = box;
find_ptr(begin_ptr, end, box, value);
show(begin_ptr, end);

system("pause");
}
R.
Rubaev .
59 486
Лучший ответ
& - берем указатель на переменную arr

* - разыменовываем этот указатель, то есть получаем ссылку на переменную

логически это типа как x + y - y
то есть лишнее действие (получение указателя)
если нужна ссылка допустим в функцию foo, то можно было просто написать так: foo(arr);
Игорь Галюк
Игорь Галюк
92 464
& - берем адрес
* - получаем значение в соответствии с типом
указатель на путь к переменной
Игорь Галюк путь - нет такого термина... Плюсов не знаешь