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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

03.04.2013, 14:14. Просмотров 938. Ответов 3
Метки нет (Все метки)

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++ сменить адрес указателя
C++ Как узнать адрес указателя на char?
C++ Как мне конвертировать адрес указателя (например 00A88B68) в тип string ? C++
C++ Вставка asm, адрес члена локального объекта
C++ Как узнать адрес указателя?
C++ Изменить адрес указателя
Как передать адрес объекта через функцию C++
Доступ к приватному полю через адрес экземпляра объекта C++
C++ Адрес объекта в памяти при наследовании

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
03.04.2013, 14:58     Адрес объекта, адрес указателя. Где что находится? #4
Цитата Сообщение от xtorne21st Посмотреть сообщение
Получается что при передачи в функцию указателя, он создаёт свою локальную копию?
Само собой. Все параметры функции - это копии передаваемых объектов
Ссылка - это просто обертка над указателем.
Yandex
Объявления
03.04.2013, 14:58     Адрес объекта, адрес указателя. Где что находится?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru