Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

03.04.2013, 14:14. Просмотров 1090. Ответов 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$
Не понятно, за что отвечает каждый адрес, и почему последние значения отличаются?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 14:14
Ответы с готовыми решениями:

Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели на этот массив равны.
Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели...

Сменить адрес указателя
У меня есть переменная v. Как сделать так, что бы в некоторый момент времени...

Изменить адрес указателя
Подскажите пожалуйста, как изменить не только адрес куда указывает указатель,...

Узнать адрес указателя
Есть функция в чужой программе, которая в качестве параметров принимает...

Сменить адрес указателя
Подскажите пожалуйста, допустим есть 2 массива A и B с 2-я указателями на них a...

3
Croessmah
++Ͻ
14503 / 8285 / 1556
Регистрация: 27.09.2012
Сообщений: 20,338
Записей в блоге: 3
Завершенные тесты: 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';
}
1
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
03.04.2013, 14:52  [ТС] #3
Цитата Сообщение от Croessmah Посмотреть сообщение
первая строка - адрес локальной переменной val
вторая строка - адрес указателя p
Не совсем понятно, чем отличаются эти 2. Получается что при передачи в функцию указателя, он создаёт свою локальную копию? Или я опять что-то не так понял?)
0
Croessmah
++Ͻ
14503 / 8285 / 1556
Регистрация: 27.09.2012
Сообщений: 20,338
Записей в блоге: 3
Завершенные тесты: 1
03.04.2013, 14:58 #4
Цитата Сообщение от xtorne21st Посмотреть сообщение
Получается что при передачи в функцию указателя, он создаёт свою локальную копию?
Само собой. Все параметры функции - это копии передаваемых объектов
Ссылка - это просто обертка над указателем.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2013, 14:58

Как узнать адрес указателя?
(void *)str показывает адрес строки, а как узнать адрес указателя? char *str...

Получить адрес указателя на функцию
int(*ptr)(int) = &amp;abs; cout &lt;&lt; &quot;&amp;abs = &quot; &lt;&lt; &amp;ptr &lt;&lt; endl; cout &lt;&lt; &quot;&amp;ptr =...

У указателя самопроизвольно меняется адрес
Заметил такую странную вещь: #include &lt;iostream&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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