![]() |
|
Модераторы: bsa |
![]()
|
|
| Robix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 1.6.2009 Репутация: нет Всего: нет |
Здравствуйте, ниже код, где Struct01 это структура.
Из вышеописанного кода хотелось бы понимать что означает 1). &pObjData->dwData ; можно ли так написать? 2). (Struct01*)&pObjData->dwData ; что все это означает ? |
|||
|
||||
| konshyn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
-------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Здравствуйте.
Если я правильно помню приоритеты операций, то сначала будет выполнена операция (pObjData->dwData), а затем вы получите адрес этой области памяти с помощью оператора &. (&pObjData->dwData) - вот тут вы получили адрес dwData, а (Struct01*) приводит этот адрес к указателю на Struct01. |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Кстати, не очень хорошая конструкция. Судя по названию dwData определена как DWORD, а в неё запихивают адрес некой структуры. В 64-х битном окружении возможны большие проблемы.
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Robix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 1.6.2009 Репутация: нет Всего: нет |
Спасибо. Теперь все ясно.
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
| Robix |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 1.6.2009 Репутация: нет Всего: нет |
Ктати, хотел уточнить, после
получается, что тип по адресу переменной dwData будет "указатель на структуру Struct01". И получается что одному указателю присваивается другой. Это не тот случай, когда один указатель указывает на другой? Я читал, что если один указатель на другой указывает, то нужно две звездочки ставить, типа так
Или я не так понял? |
||||
|
|||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Вы не так поняли. Тут не присваивается одному указателю другой указатель.
Тут указателю присваивается адрес dwData. Указатель - это просто переменная, в которой хранится какой-то адрес. Две звездочки ставится в случае указателя на указатель. |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Прошу прощения, был невнимателен. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
указатель хранит адрес переменной, содержащей значение какого-то типа если в переменной хранится адрес, т.е. она сама является указателем, то указатель на неё будет указателем на указатель, т.е. будет хранить адрес переменной, содержащей адрес
Это сообщение отредактировал(а) baldina - 4.6.2015, 16:46 |
|||
|
||||
| Robix |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 1.6.2009 Репутация: нет Всего: нет |
Спасибо.
Только вот что еще интересно: Почему так нельзя написать, где Struct01 без звездочки? Потому-что тип для адреса можно приводить только указатель? 1).
А если так написать с целью сделать тоже самое, это правильно? 2).
|
||||
|
|||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Потому что, таким образом, вы пытаетесь привести адрес dwData к типу своей струкутры. То есть, если тут все сработает (что, конечно, не верно)
То на выходе вы получите объект структуры Struct01. А затем вы пытаетесь этот объект привести к типу указателя на этот объект. Чисто теоретически, должно сработать, но не уверен. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |