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

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

Войти
Регистрация
Восстановить пароль
 
ioscat
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
#1

Как получить адрес переменной типа unsigned char? - C++

08.08.2014, 14:12. Просмотров 712. Ответов 6
Метки нет (Все метки)

Всем привет!

Как получить адрес переменной типа unsigned char? Всё ерунда получается

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
 
int main()
{
    
 
    
    unsigned char a = 0x64;
    cout << "a: " << a<< "\n";
    cout << "&a: " << &a<< "\n";
    //cout << "*a: " << *a<< "\n";
    unsigned char * A = (unsigned char*)(void*)&a;
    cout << "A: " << A << "\n";
 
    A=(unsigned char*)&a;
 
    cout << "A: " << A << "\n";
    cout << "*A: " << *A << "\n";
    cout << "&A: " << &A << "\n";
    for (int i=0; i<4;i++)
    {
        cout << "A: " << A[i] << "\n";
    }
 
 
    cout << "\n";
 
    for (int i=0; i<4;i++)
    {
        cout << "A+: " << A+i << "\n";
    }
 
    cout << "\n";
 
    for (int i=0; i<4;i++)
    {
        cout << "*A+: " << *(A+i) << "\n";
    }
 
    int * B = new int;
    int b=0x02020202;
    B=&b;
    cout << "&b: " << &b << "\n";
    cout << "B: " << B << "\n";
 
    A=(unsigned char*)&b;
    cout << "A: " << A << "\n";
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2014, 14:12     Как получить адрес переменной типа unsigned char?
Посмотрите здесь:

C++ проблема с переменной типа char
C++ Как программно получить заначение типа переменной.
C++ Сравнение строки в структуре с переменной типа char
C++ Вывод переменной типа char
C++ как задать границу для типа данных unsigned char*
C++ Надо перевести переменную типа unsigned char* в signed int и обратно
Изменить программу для типа unsigned char C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 294
Регистрация: 04.12.2011
Сообщений: 8,027
Записей в блоге: 3
08.08.2014, 14:31     Как получить адрес переменной типа unsigned char? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
unsigned char a = 0x64;//0xFF мах
cout<<a<<endl;
unsigned char *ptr = &a;//это имеет смысл лишь если предполагается доступ к значению разодресацией указателя:
cout<<*ptr<<endl;
//cout<<ptr; //так нельзя char * это строка от Си и ничего хорошего не будет
//можно
cout<<(void*)ptr<<endl;
//или сразу:
void *p = &a;
cout<<p;
cin.get();
return 0;
}
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2014, 14:46     Как получить адрес переменной типа unsigned char? #3
Цитата Сообщение от ioscat Посмотреть сообщение
Как получить адрес переменной типа unsigned char?
Проблема не с получением как таковым, а с выводом на консоль. В данном случае происходит преобразование к типу const char* и интерпретируется как вывод Си-строки. Для вывода адреса в данном случае требуется явное преобразование к типу void*, ну или вывод сишными средствами через printf:
C++
1
2
3
unsigned char uc = 42;
std::cout << static_cast<void*>(&uc) << std::endl;
std::printf( "%p\n", &uc );
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
08.08.2014, 15:12     Как получить адрес переменной типа unsigned char? #4
Замечание:
Цитата Сообщение от ioscat Посмотреть сообщение
int * B = new int; .// выделили память под переменную
int b=0x02020202;
B=&b;// заменили адрес переменной и, тем самым, потеряли выделенную память!
ioscat
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
08.08.2014, 15:47  [ТС]     Как получить адрес переменной типа unsigned char? #5
Цитата Сообщение от zss Посмотреть сообщение
B=&b;// заменили адрес переменной и, тем самым, потеряли выделенную память!
потеряли = утечка?
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
08.08.2014, 15:54     Как получить адрес переменной типа unsigned char? #6
Цитата Сообщение от ioscat Посмотреть сообщение
потеряли = утечка?
Можно считать, что да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2014, 15:55     Как получить адрес переменной типа unsigned char?
Еще ссылки по теме:

Использование переменной типа char в цикле for C++
C++ Приведение типов unsigned char[2] to unsigned char [64]
C++ Вывод адреса переменной типа char
C++ Не могу вывести unsigned char символ. Как исправить?
Как сохранить float в переменной типа char? C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2014, 15:55     Как получить адрес переменной типа unsigned char? #7
Цитата Сообщение от ioscat Посмотреть сообщение
потеряли = утечка?
Да. И заодно совет, не используете одинаковые имена в разных регистрах. Вместо b, B лучше сделать b1, b2 например.
Yandex
Объявления
08.08.2014, 15:55     Как получить адрес переменной типа unsigned char?
Ответ Создать тему
Опции темы

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