Там какой-либо путь состоит в том, чтобы найти адрес ссылки?

Там какой-либо путь состоит в том, чтобы найти адрес ссылки?

Создание его более конкретный: адрес самой переменной а не адрес переменной это инициализируется с.

62
задан 6 March 2015 в 03:44

3 ответа

Это возможно, но не строго использующий C++. Так как ссылка передается как параметр функции, ее значение будет сохранено на стеке или в регистре. Это - зависимый аппаратной архитектуры. Доступ к этим значениям потребует встроенного ассемблерного кода. Консультируйтесь со справочником для процессора, который Вы используете для определения поведения стека и адресов регистра. Повреждение стека или регистров может очень легко вызвать BSOD, потерю данных или даже непоправимый урон Вашей системе. Действуют с экстремальной осторожностью.

1
ответ дан 31 October 2019 в 13:31
//YES reference varies
//but a little trick in the compiler

    int i = 333;
    int j = 444;
    int &ref = i;                   //ref=i value
    int* p = nullptr;


    printf("ref=%d\n", ref);        //333  i value

    *(&p + 3) = &j;                 //&ref=j

    printf("ref=%d\n", ref);        //444  j value
-2
ответ дан 31 October 2019 в 13:31

От другого экземпляра этого того же вопроса: $8.3.2/3 - "Это является неуказанным, требует ли ссылка устройства хранения данных (3.7)"..

, Таким образом, стандарт C++ позволяет конструктору компилятора/времени выполнения выбирать, живет ли ссылка в отдельной ячейке памяти. Однако обратите внимание, что, если это действительно живет в отдельной ячейке памяти, Вы не можете найти ее адрес стандартно-совместимым способом. Не делайте этого.

при взятии адреса ссылки, по определению в стандарте C++, Вы получите адрес того, что это отсылает к, а не адрес ссылки, если на самом деле, что ссылка даже существует как отдельный объект в среде выполнения или нет.

9
ответ дан 31 October 2019 в 13:31

Другие вопросы по тегам:

Похожие вопросы: