Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Указатели на структуру

Сб июн 18, 2022 16:33:29

Доброго времени суток! Ребят, никак не могу разобраться, знаю что здесь все просто, но до меня не доходит. В файле  stm32f103xb.h имеются обозначение регистров STM32.  К обозначены в #define как указатели на структуру (см. рисунок №1). Вопрос в следующем:

1) Для чего нужны скобки около TIM_TypeDef * (на рисунке №3 эти скобки показаны стрелкой)? Ведь указатели на структуру обьявляются без этих скобок (см. рисунок №2)
Вложения
3.png
(5.87 KiB) Скачиваний: 86
2.png
(222.96 KiB) Скачиваний: 66
1.png
(106.67 KiB) Скачиваний: 70

Re: Указатели на структуру

Сб июн 18, 2022 16:41:36

Для чего нужны скобки

Приведение типа. Это же дефайн, а не объявление.

Re: Указатели на структуру

Сб июн 18, 2022 16:59:12

странно, что возник вопрос с приведением, а не с со скобками корневого уровня (или как их ещё назвать, общими? глобальными? просто первыми?)

Re: Указатели на структуру

Сб июн 18, 2022 17:46:46

а не с со скобками корневого уровня

Эти скобки нужны, чтобы не нарваться на неприятности при использовании дефайна. Иначе при подстановке приведение типа будет отнесено ко всей конструкции указателя на структуру.

Re: Указатели на структуру

Сб июн 18, 2022 18:25:06

Для чего нужны скобки

Приведение типа. Это же дефайн, а не объявление.

Теперь я совсем ничего не понимаю. Разве это не указатель на структуры? Почему это приведение типов?

Re: Указатели на структуру

Сб июн 18, 2022 19:18:36

Разве это не указатель на структуры?

Нет. Указатель - это тип переменной. А в данном случае определяется ("дефайнится") абсолютный адрес - то есть просто число-константа. Размерность константы нужно привести к типу указателя. Это в дефайне и сделано.
Далее подстановка дефайна в качестве имени указателя будет абсолютным адресом, а не переменной.

Re: Указатели на структуру

Сб июн 18, 2022 19:26:08

Разве это не указатель на структуры?

Нет. Указатель - это тип переменной. А в данном случае определяется ("дефайнится") абсолютный адрес - то есть просто число-константа. Размерность константы нужно привести к типу указателя. Это в дефайне и сделано.

Примерно понял. А еще понял что мне нужно еще лучше попрактиковаться в си.
Если это приведение типов, для чего там звездочка. Может тему подскажите где это почитать?

Re: Указатели на структуру

Сб июн 18, 2022 19:33:08

Если это приведение типов, для чего там звездочка?

Звездочка там потому, что это тип указателя, хоть и константа. Разыменование константы имеющей тип указателя позволяет присвоить значение по абсолютному адресу равному этой константе.

Re: Указатели на структуру

Сб июн 18, 2022 19:36:04

для чего там звездочка. Может тему подскажите где это почитать?
Почитайте учебник по си. Раздел про указатели.

Re: Указатели на структуру

Сб июн 18, 2022 22:40:12

Спасибо
Ответить