Страница 1 из 1
Указатели на структуру
Добавлено: Сб июн 18, 2022 16:33:29
maksimdag0
Доброго времени суток! Ребят, никак не могу разобраться, знаю что здесь все просто, но до меня не доходит. В файле stm32f103xb.h имеются обозначение регистров STM32. К обозначены в #define как указатели на структуру (см. рисунок №1). Вопрос в следующем:
1) Для чего нужны скобки около TIM_TypeDef * (на рисунке №3 эти скобки показаны стрелкой)? Ведь указатели на структуру обьявляются без этих скобок (см. рисунок №2)
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 16:41:36
КРАМ
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4247423#p4247423"]Для чего нужны скобки[/uquote]
Приведение типа. Это же дефайн, а не объявление.
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 16:59:12
Martian
странно, что возник вопрос с приведением, а не с со скобками корневого уровня (или как их ещё назвать, общими? глобальными? просто первыми?)
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 17:46:46
КРАМ
[uquote="Martian",url="/forum/viewtopic.php?p=4247439#p4247439"]а не с со скобками корневого уровня[/uquote]
Эти скобки нужны, чтобы не нарваться на неприятности при использовании дефайна. Иначе при подстановке приведение типа будет отнесено ко всей конструкции указателя на структуру.
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 18:25:06
maksimdag0
[uquote="КРАМ",url="/forum/viewtopic.php?p=4247430#p4247430"][uquote="maksimdag0",url="/forum/viewtopic.php?p=4247423#p4247423"]Для чего нужны скобки[/uquote]
Приведение типа. Это же дефайн, а не объявление.[/uquote]
Теперь я совсем ничего не понимаю. Разве это не указатель на структуры? Почему это приведение типов?
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 19:18:36
КРАМ
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4247512#p4247512"]Разве это не указатель на структуры?[/uquote]
Нет. Указатель - это тип переменной. А в данном случае определяется ("дефайнится") абсолютный адрес - то есть просто число-константа. Размерность константы нужно привести к типу указателя. Это в дефайне и сделано.
Далее подстановка дефайна в качестве имени указателя будет абсолютным адресом, а не переменной.
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 19:26:08
maksimdag0
[uquote="КРАМ",url="/forum/viewtopic.php?p=4247566#p4247566"][uquote="maksimdag0",url="/forum/viewtopic.php?p=4247512#p4247512"]Разве это не указатель на структуры?[/uquote]
Нет. Указатель - это тип переменной. А в данном случае определяется ("дефайнится") абсолютный адрес - то есть просто число-константа. Размерность константы нужно привести к типу указателя. Это в дефайне и сделано.[/uquote]
Примерно понял. А еще понял что мне нужно еще лучше попрактиковаться в си.
Если это приведение типов, для чего там звездочка. Может тему подскажите где это почитать?
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 19:33:08
КРАМ
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4247572#p4247572"]Если это приведение типов, для чего там звездочка?[/uquote]
Звездочка там потому, что это тип указателя, хоть и константа. Разыменование константы имеющей тип указателя позволяет присвоить значение по абсолютному адресу равному этой константе.
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 19:36:04
jcxz
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4247572#p4247572"]для чего там звездочка. Может тему подскажите где это почитать?[/uquote]Почитайте учебник по си. Раздел про указатели.
Re: Указатели на структуру
Добавлено: Сб июн 18, 2022 22:40:12
maksimdag0
Спасибо