Форум программистов, компьютерный форум CyberForum.ru

Адрес объекта, адрес указателя. Где что находится? - C++

Восстановить пароль Регистрация
 
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
03.04.2013, 14:14     Адрес объекта, адрес указателя. Где что находится? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
void Foo(int* val)
{
    std::cout << val << " " << *val << " " << &val << '\n';
}
 
void Bar(int* &val)
{
    std::cout << val << " " << *val << " " << &val << '\n';
}
 
int main()
{
    int v = 5;
    int* p = &v;
 
    Foo(p);
    Bar(p);
}
Bash
1
2
3
4
ilyuha21st@coldshoot:~/Projects$ ./some1 
0x7fff709e347c 5 0x7fff709e3438
0x7fff709e347c 5 0x7fff709e3470
ilyuha21st@coldshoot:~/Projects$
Не понятно, за что отвечает каждый адрес, и почему последние значения отличаются?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 14:14     Адрес объекта, адрес указателя. Где что находится?
Посмотрите здесь:

C++ Получить адрес объекта
Адрес объекта. C++
C++ сменить адрес указателя
C++ Как узнать адрес указателя на char?
C++ Как мне конвертировать адрес указателя (например 00A88B68) в тип string ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
03.04.2013, 14:38     Адрес объекта, адрес указателя. Где что находится? #2
Цитата Сообщение от xtorne21st Посмотреть сообщение
за что отвечает каждый адрес
которые в первом столбике - адрес, содержащийся в val(адрес переменной v).
второй столбик - тут все и так понятно
Цитата Сообщение от xtorne21st Посмотреть сообщение
почему последние значения отличаются?
третий столбик:
первая строка - адрес локальной переменной val
вторая строка - адрес указателя p

Добавлено через 3 минуты
Функция Bar выглядит примерно так:
C++
1
2
3
4
 void Bar(int ** val)
{
    std::cout << *val << " " << **val << " " << val << '\n';
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
03.04.2013, 14:52  [ТС]     Адрес объекта, адрес указателя. Где что находится? #3
Цитата Сообщение от Croessmah Посмотреть сообщение
первая строка - адрес локальной переменной val
вторая строка - адрес указателя p
Не совсем понятно, чем отличаются эти 2. Получается что при передачи в функцию указателя, он создаёт свою локальную копию? Или я опять что-то не так понял?)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
03.04.2013, 14:58     Адрес объекта, адрес указателя. Где что находится? #4
Цитата Сообщение от xtorne21st Посмотреть сообщение
Получается что при передачи в функцию указателя, он создаёт свою локальную копию?
Само собой. Все параметры функции - это копии передаваемых объектов
Ссылка - это просто обертка над указателем.
Yandex
Объявления
03.04.2013, 14:58     Адрес объекта, адрес указателя. Где что находится?
Ответ Создать тему
Опции темы

Текущее время: 07:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru