Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
-3 / 7 / 2
Регистрация: 10.11.2008
Сообщений: 776
1

Преобразование указателей

26.04.2016, 09:36. Показов 528. Ответов 5
Метки нет (Все метки)

Выводит дерево вместо адреса
C++
1
2
3
4
5
6
7
int x = 5;
    int *p;
    p = &x;
    cout << p << endl;
    char *p2 = reinterpret_cast<char*>(p);
    //p++;
    cout << p2;
Можно написать
C++
1
cout << &p;
, но, ведь, должен же выводится адрес, т.к. я не
C++
1
cout << *p
использую
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2016, 09:36
Ответы с готовыми решениями:

Преобразование указателей
Люди добрые, прокомментируйте поЖалуйста. #include &lt;iostream&gt; using namespace std; void...

Преобразование указателей на функции
Добрый вечер, очень давно я не объявлялся. Буквально несколько месяцев даже не садился прогать за...

Задачка на понимание указателей, преобразование типов
Написать функцию, принимающую вещественное число типа float, превращающую его в целое типа int с...

Нюансы арифметики указателей: преобразование к char* при вычислении сдвига
Добрый день! Вчера, при чтении темы возник вопрос различия между указателями и массивами. В теме...

5
68 / 67 / 59
Регистрация: 14.07.2013
Сообщений: 251
26.04.2016, 09:44 2
Так что не так?
Все правильно выводится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main(){
    int x = 68;
    int *p;
    p = &x;
    cout << p << endl;
    char *p2 = reinterpret_cast<char*>(p);
    //p++;
    cout << p2 << endl;
    return 0;
}
Вывод:
0x7fff8bc58fac
D
0
-3 / 7 / 2
Регистрация: 10.11.2008
Сообщений: 776
26.04.2016, 09:50  [ТС] 3
Цитата Сообщение от akaAxeL Посмотреть сообщение
Так что не так?
Так ведь p = &x, значит
C++
1
cout << p;
=
C++
1
cout << &x;
0
68 / 67 / 59
Регистрация: 14.07.2013
Сообщений: 251
26.04.2016, 09:57 4
Да все верно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main(){
    int x = 68;
    int *p;
    p = &x;
    cout << p << endl;
    cout << &x << endl;
    char *p2 = reinterpret_cast<char*>(p);
    //p++;
    cout << p2 << endl;
    return 0;
}
Вывод:
0x7fff1443e2dc
0x7fff1443e2dc
D
0
-3 / 7 / 2
Регистрация: 10.11.2008
Сообщений: 776
26.04.2016, 10:04  [ТС] 5
p2 же тоже указатель, тоже на адрес указывает, только тип другой

Добавлено через 22 секунды
А выводится, как разыменованный указатель
0
68 / 67 / 59
Регистрация: 14.07.2013
Сообщений: 251
26.04.2016, 10:11 6
А так мы про p2 говорим.
Это потому, что в C++ оператор << так для char* определен. Выводить не адрес, а содержимое. Так же в C printf("%s", p2); выводит содержимое, да и просто printf(p2); тоже.
cout - это объект класса std::ostream
у него переопределён оператор<<
cout.operator<<( const char* const str);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2016, 10:11

Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей?
Доброго времени суток! Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты,...

Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си)
Уважаемые программисты, возникло несколько вопросов касательно указателей. Почему при выводе...

Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей
Задача: создать специфицированный шаблон функции, принимающей массив указателей на char и...

Создать специализацию для шаблона, которая принимает массив указателей на строки и количество этих указателей
Нужно создать специализацию для шаблона, которая принимает массив указателей на строки и количество...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru