Вопросы про структуры, указатели и всякие непонятки в "Си"

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
Aneg
Сообщения: 17
Откуда: Украина

Сообщение Aneg » 28 янв 2012, 18:23

Вот в этом "Си" код:

Код: Выделить всё

RCC->CR|=RCC_CR_HSION; //Turn ON HSI
while (!(RCC->CR & RCC_CR_HSIRDY)); //Wait until it's stable

исходя их комментариев понятно:

- что в начале устанавливаем бит RCC_CR_HSION в 1
- потом идет цикл ожидания, пока бит RCC_CR_HSIRDY станет равным 1

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

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 28 янв 2012, 18:33

Почитай таки любую книжку по си, в ЛЮБОЙ это расписано.

А по теме:
-> - обратиться по указателю
| - или
! - не
& - и

vens_i
Сообщения: 25
Откуда: Пятигорск

Сообщение vens_i » 17 сен 2012, 09:28

А лучше курс123avr, там в пятом уроке про это подробненько описанно

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 25 сен 2012, 21:57

это не то ли где текст через строку с рекламой?

vens_i
Сообщения: 25
Откуда: Пятигорск

Сообщение vens_i » 23 ноя 2012, 10:54

Да это он. Очень информативен и в тоже время избыточен!

vens_i
Сообщения: 25
Откуда: Пятигорск

Сообщение vens_i » 23 ноя 2012, 10:59

Коллеги а если не составит труда подкиньте реальный код где используются указатели! я лично ими не пользуюсь(от недостатка понимания как это все применить в реальных условиях) вроде как больше гемороя будет от них чем пользы. с теорией я знаком но не откажусь если подкинете ссылок и литературы.
вот тут хорошо написанно мир кода. ру

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 23 ноя 2012, 11:01

Такой пример - в первом посте темы, RCC - это указатель, а -> - обращение по указателю.

vens_i
Сообщения: 25
Откуда: Пятигорск

Сообщение vens_i » 23 ноя 2012, 11:06

Это STMовская библиотечка как ме кажется,

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 23 ноя 2012, 14:47

Ну так одно другому не мешает... У указателей есть своя ниша... К примеру функция принимает в качестве аргумента увесистую структуру... Если еще передавать по значению, то вызов получится неоправданно тяжелым, а передав указатель проблема решается легко и просто... Либо если функция должна возвращать несколько значений разных типов, то вполне логично передать ей указатели на переменные, а она запишет в эти переменные свои значения... И это не все ситуации... И всетаки не познакомиться с теорией, а подружиться имхо будет правильнее... ибо чужой рабочий код врядли будет снабжен разжевывающими комментариями по поводу применения указателей, а без комментариев разобраться обычно не просто...

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 23 ноя 2012, 14:53

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

Vasiliy_Br
Сообщения: 11

Сообщение Vasiliy_Br » 27 сен 2013, 12:11

Всем привет, вот решаю тестики всякие, нужна Ваша помощь. Честное слово гуглил, но что то не нашел.
Какие объявления приведут к ошибке компиляции?
void foo1(int n, int a[]) {} /*1*/
void foo2(int n, int a[*]) {} /*2*/
void foo3(int n, int a[*]); /*3*/
void bar(int a[0]); /*4*/
int a[*] что такое астерикс в квадратных скобках?

пс Новую тему решил не создавать, а это название мне понравилось :)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 27 сен 2013, 14:03

2 и 3 потому, что * - это оператор и выражение [*] не имеет смысла.

Vasiliy_Br
Сообщения: 11

Сообщение Vasiliy_Br » 27 сен 2013, 14:59

... Я сейчас пасусь вот тут http://www.quizful.net . И вопрос оттуда, вроде правильные варианты 2 , 4. Как раз в обсуждении говорили что [*] допустимо и только в прототипах ф. А я попытался выяснить, что же это такое .

Вернуться в «Микроконтроллеры и ПЛИС»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 22 гостя