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

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

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

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

03.04.2013, 14:14. Просмотров 968. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Адрес объекта, адрес указателя. Где что находится? (C++):

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

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

сменить адрес указателя - C++
У меня есть переменная v. Как сделать так, что бы в некоторый момент времени она равнялась какому-то &quot;своему&quot; значению, а в другой...

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

Изменить адрес указателя - C++
Подскажите пожалуйста, как изменить не только адрес куда указывает указатель, но и адрес самого указателя Для примера: char...

Получить адрес указателя на функцию - C++
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 = &quot; &lt;&lt; endl; Собственно, вопрос в заголовке. Хотя я...

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

Как узнать адрес указателя? - C++
(void *)str показывает адрес строки, а как узнать адрес указателя? char *str = &quot;bla-bla-bla&quot;; cout &lt;&lt; &quot;Value of str is: &quot; &lt;&lt; str &lt;&lt;...

Как узнать адрес указателя на char? - C++
Например, вот есть массив символов и указатель. И указателю присваиваем адрес этого массива. А как узнать адрес самого указателя? char...

Как мне конвертировать адрес указателя (например 00A88B68) в тип string ? C++ - C++
вопрос в имени темы

Функция возвращает адрес , как передать этот адрес другой функции ? - C++
const int max = 5; double * fill_array(double, int); void show_array(const double, double *); // как передать этой функции в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.04.2013, 14:58
Ответ Создать тему
Опции темы

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