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

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

Восстановить пароль Регистрация
 
ioscat
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 44
08.08.2014, 14:12     Как получить адрес переменной типа unsigned char? #1
Всем привет!

Как получить адрес переменной типа 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 284
Регистрация: 04.12.2011
Сообщений: 7,711
Записей в блоге: 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
:)
Эксперт С++
4378 / 3221 / 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
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
08.08.2014, 15:12     Как получить адрес переменной типа unsigned char? #4
Замечание:
Цитата Сообщение от ioscat Посмотреть сообщение
int * B = new int; .// выделили память под переменную
int b=0x02020202;
B=&b;// заменили адрес переменной и, тем самым, потеряли выделенную память!
ioscat
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 44
08.08.2014, 15:47  [ТС]     Как получить адрес переменной типа unsigned char? #5
Цитата Сообщение от zss Посмотреть сообщение
B=&b;// заменили адрес переменной и, тем самым, потеряли выделенную память!
потеряли = утечка?
Vourhey
Почетный модератор
6468 / 2243 / 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?
Еще ссылки по теме:

Изменить программу для типа unsigned char C++
Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" C++
C++ Приведение типов unsigned char[2] to unsigned char [64]

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 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?
Ответ Создать тему
Опции темы

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