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

Непонятный синтаксис, указатели, типы, ссылки - C++

Восстановить пароль Регистрация
 
John1992on
19 / 19 / 2
Регистрация: 09.04.2010
Сообщений: 123
05.03.2014, 22:55     Непонятный синтаксис, указатели, типы, ссылки #1
В фрагменте программы, которая разбивает большое HEX число на части:
C++
1
2
3
4
5
6
7
8
9
unsigned __int8 *ptr8;
__int32 a;
Edit1->Text=("0x"+IntToHex(0x23DA6FEC,8));
a = StrToInt(Edit1->Text);
ptr8=(__int8*)&a;
Edit6->Text="0x"+IntToHex(*ptr8,2);
Edit5->Text="0x"+IntToHex(*(1+ptr8),2);
Edit4->Text="0x"+IntToHex(*(2+ptr8),2);
Edit3->Text="0x"+IntToHex(*(3+ptr8),2);
не понятна строчка " ptr8=(__int8*)&a; " - это преобразование адреса переменной a c __int32 в __int8 как я понял, но как оно работает?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2014, 22:55     Непонятный синтаксис, указатели, типы, ссылки
Посмотрите здесь:

Ссылки. Разные типы. C++
C++ Непонятный синтаксис
C++ [C++]Ссылки и указатели?
C++ Непонятный синтаксис.
Ссылки vs Указатели C++
C++ Ссылки и указатели
Указатели и ссылки C++
Ссылки и указатели. Синтаксис C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
05.03.2014, 23:12     Непонятный синтаксис, указатели, типы, ссылки #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от John1992on Посмотреть сообщение
е понятна строчка " ptr8=(__int8*)&a; " - это преобразование адреса переменной a c __int32 в __int8 как я понял, но как оно работает?
да так и работает
адрес остается тот же самый но меняется база для адресной арифметики
вот у тебя есть строки
Цитата Сообщение от John1992on Посмотреть сообщение
Edit5->Text="0x"+IntToHex(*(1+ptr8),2);
Edit4->Text="0x"+IntToHex(*(2+ptr8),2);
Edit3->Text="0x"+IntToHex(*(3+ptr8),2);
допустим ptr8 указывает на адрес 100
если бы не приводил то
1+ptr8 указывал бы на 104 адрес
2+ptr8 на 108
3+ptr8 на 112
шагал бы через четыре байта( размер int)
а так
ptr8 указывает на 100 адрес
1+ptr8 на 101
2+ptr8 на 102
3+ptr8 на 103
шагаем на следующий байт

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

почитай про адресную арифметику, чтобы такие вопросы не возникали
Yandex
Объявления
05.03.2014, 23:12     Непонятный синтаксис, указатели, типы, ссылки
Ответ Создать тему
Опции темы

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