С чего начать программировать микроконтроллеры?
Re: С чего начать программировать микроконтроллеры?
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4076007#p4076007"]И вообще, быть вендузятником - это как на нуль делить свою жизнь!!![/uquote]Операционная система, как и любой другой инструмент, выбирается исходя из круга стоящих задач. Считать по-другому - искусственно ограничивать себя, а это неправильно.
Последний раз редактировалось mickbell Сб авг 14, 2021 22:51:05, всего редактировалось 1 раз.
И хрюкотали зелюки,
Как мюмзики в мове.
На каждый РКН
Найдётся VPN.
Как мюмзики в мове.
На каждый РКН
Найдётся VPN.
Re: С чего начать программировать микроконтроллеры?
Разобрался. Написано Buy, я так понял что покупать надо. Не хотел по имейлу активировать. Ок, запустил.
Добавлено after 2 minutes 22 seconds:
Насчёт винды я согласен что надо с неё уходить только из за того что они наглеют. Слежка и.т.п.
А программировать где угодно можно и применять навыки. Потом ещё искать эмуляторы для виндовских программ под линукс.
Добавлено after 5 minutes 58 seconds:
https://learnc.info/c/namespaces.html
Функцию нельзя определять более одного раза в разных файлах или нельзя иметь функции с одинаковыми названиями в разных файлах?
Добавлено after 2 minutes 22 seconds:
Насчёт винды я согласен что надо с неё уходить только из за того что они наглеют. Слежка и.т.п.
А программировать где угодно можно и применять навыки. Потом ещё искать эмуляторы для виндовских программ под линукс.
Добавлено after 5 minutes 58 seconds:
https://learnc.info/c/namespaces.html
Функцию нельзя определять более одного раза в разных файлах или нельзя иметь функции с одинаковыми названиями в разных файлах?
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: С чего начать программировать микроконтроллеры?
[uquote="mickbell",url="/forum/viewtopic.php?p=4076026#p4076026"]Операционная система, как и любой другой инструмент, выбирается исходя из круга стоящих задач. Считать по-другому - искусственно ограничивать себя, а это неправильно.[/uquote]
Ну-ну... Одно дело - в игрушки играть, для чего мастдайка как раз подходит, и совсем другое - работать! Без баша с кореутилсами вообще ничего не сделать. Я уж молчу о вменяемом репозитории с софтом!
Ну-ну... Одно дело - в игрушки играть, для чего мастдайка как раз подходит, и совсем другое - работать! Без баша с кореутилсами вообще ничего не сделать. Я уж молчу о вменяемом репозитории с софтом!
Не надо. Очень редко можно найти такой софт, который только под огороженной мастдайкой работает. Но все равно он будет стоить 100500 денег, так что — не нужен!Потом ещё искать эмуляторы для виндовских программ под линукс.
Re: С чего начать программировать микроконтроллеры?
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4076061#p4076061"]Ну-ну... Одно дело - в игрушки играть, для чего мастдайка как раз подходит[/uquote]Игрушки - тоже аргумент.
И хрюкотали зелюки,
Как мюмзики в мове.
На каждый РКН
Найдётся VPN.
Как мюмзики в мове.
На каждый РКН
Найдётся VPN.
Re: С чего начать программировать микроконтроллеры?
Кто подскажет.
Спецификатор %p происходит от слова Pointer- указатель.
Взять адрес переменной можно так: int r; printf("%p\n", &r);
Здесь всё логично для меня, спецификатор с названием Pointer работает с адресом.
Но ведь указателем называют другую конструкцию. Вот такую int r=0; int *k=&r;
Здесь непонятно почему это является указателем. Добавили ещё одну конструкцию и называем это указателем, хотя адрес переменной можно брать без посредника, в данном случае посредник это переменная k.
Спецификатор %p происходит от слова Pointer- указатель.
Взять адрес переменной можно так: int r; printf("%p\n", &r);
Здесь всё логично для меня, спецификатор с названием Pointer работает с адресом.
Но ведь указателем называют другую конструкцию. Вот такую int r=0; int *k=&r;
Здесь непонятно почему это является указателем. Добавили ещё одну конструкцию и называем это указателем, хотя адрес переменной можно брать без посредника, в данном случае посредник это переменная k.
Re: С чего начать программировать микроконтроллеры?
и сразу вопрос: что значить "брать"?хотя адрес переменной можно брать без посредника
Re: С чего начать программировать микроконтроллеры?
Я не знаю как правильно сказать. Буду стараться выражаться понятнее.
Я имел в виду: я вывожу на экран адрес переменной r работая со спецификатором, который происходит от слова Pointer(Указатель) %р.
И это для меня было логично, это бы я принял как описание указателя.
Но указатель почему то это другое, со звёздочками.
Добавлено after 33 minutes 29 seconds:
Этому определению больше подходит название не Указатель, а Стрелочник))
Потому что идёт работа через переменную-посредника, в данном случае это переменная k.
Я имел в виду: я вывожу на экран адрес переменной r работая со спецификатором, который происходит от слова Pointer(Указатель) %р.
И это для меня было логично, это бы я принял как описание указателя.
Но указатель почему то это другое, со звёздочками.
Добавлено after 33 minutes 29 seconds:
Этому определению больше подходит название не Указатель, а Стрелочник))
Потому что идёт работа через переменную-посредника, в данном случае это переменная k.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: С чего начать программировать микроконтроллеры?
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076628#p4076628"]Кто подскажет.
.....
Но ведь указателем называют другую конструкцию. Вот такую int r=0; int *k=&r;
Здесь непонятно почему это является указателем. Добавили ещё одну конструкцию и называем это указателем, хотя адрес переменной можно брать без посредника, в данном случае посредник это переменная k.[/uquote]
k не является "посредником" и никакого отношения к r не имеет. k - это специфический тип переменной имеющей разрядность ПЛАТФОРМЫ и ей может быть присвоено ТОЛЬКО ЗНАЧЕНИЕ АДРЕСА.
Адрес переменной - это ЗНАЧЕНИЕ КОНСТАНТЫ, а не переменная. И именно это значение может быть присвоено типу указатель.
Ну и выражение int *k=&r; означает, что объявляется указатель k на переменную размерностью unsigned integer и ему дефолтно присваивается значение АДРЕСА переменной int r.
Возьмем для примера 8-битный МК с адресным пространством ОЗУ 16 бит. То есть максимальное (а не физически реализованное) адресуемое пространство составит 65536 байт. Тогда указатель будет 16-битный.
А если адрес 32-разрядный, то и указатель тоже будет 32-разрядный. А разрядность МК по данным может при этом быть любой от 8 бит и более.
.....
Но ведь указателем называют другую конструкцию. Вот такую int r=0; int *k=&r;
Здесь непонятно почему это является указателем. Добавили ещё одну конструкцию и называем это указателем, хотя адрес переменной можно брать без посредника, в данном случае посредник это переменная k.[/uquote]
k не является "посредником" и никакого отношения к r не имеет. k - это специфический тип переменной имеющей разрядность ПЛАТФОРМЫ и ей может быть присвоено ТОЛЬКО ЗНАЧЕНИЕ АДРЕСА.
Адрес переменной - это ЗНАЧЕНИЕ КОНСТАНТЫ, а не переменная. И именно это значение может быть присвоено типу указатель.
Ну и выражение int *k=&r; означает, что объявляется указатель k на переменную размерностью unsigned integer и ему дефолтно присваивается значение АДРЕСА переменной int r.
Возьмем для примера 8-битный МК с адресным пространством ОЗУ 16 бит. То есть максимальное (а не физически реализованное) адресуемое пространство составит 65536 байт. Тогда указатель будет 16-битный.
А если адрес 32-разрядный, то и указатель тоже будет 32-разрядный. А разрядность МК по данным может при этом быть любой от 8 бит и более.
Последний раз редактировалось КРАМ Вс авг 15, 2021 23:53:49, всего редактировалось 3 раза.
Re: С чего начать программировать микроконтроллеры?
чтобы вывести что-то на экран, сперва необходимо это что-то преобразовать в понятное для экрана. А затем записать в регистр, из которого аппаратное обеспечение МК заберёт и по интерфейсу передаст в экран. Если в функцию надо передать адрес переменной, в которой содержится значение, значит внутри этой функции также определён указатель.
Добавлено after 2 minutes 51 second:
Добавлено after 2 minutes 51 second:
ну, Си такой язык, что присвоено может быть что угодно. Но для компилятора это всегда будет адрес.и ей может быть присвоено ТОЛЬКО ЗНАЧЕНИЕ АДРЕСА.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: С чего начать программировать микроконтроллеры?
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4076647#p4076647"]присвоено может быть что угодно. Но для компилятора это всегда будет адрес.[/uquote]
А разве "что угодно" не входит в адресное пространство? И если не входит, то исключение по ошибке адреса будет следствием при обращении к переменной по этому значению указателя...
А разве "что угодно" не входит в адресное пространство? И если не входит, то исключение по ошибке адреса будет следствием при обращении к переменной по этому значению указателя...
Re: С чего начать программировать микроконтроллеры?
Это будет являться указателем? int r; printf("%p\n", &r);
Почему нет, если здесь используется спецификатор %p, который происходит от слова Pointer(Указатель)?
Добавлено after 16 minutes 35 seconds:
Адрес может и статичен, но при разыменовывании это переменная, которую можно менять сколько хочешь раз.
И это остаётся всё та же самая k при разыменовывании, которая будет являться переменной. Я вижу это как посредничество потому что адрес переменной r можно вывести на экран без посредничества дополнительных конструкций со звёздочками, что я написал постом выше.
Добавлено after 4 minutes 22 seconds:
Но что самое важное от чего я и путаюсь- это то что в этой упрощённой конструкции выведения адреса на экран я использую спецификатор %p, который происходит от слова Pointer(Указатель). Ну всмысле что ещё надо чтоб назвать это указателем.
Почему нет, если здесь используется спецификатор %p, который происходит от слова Pointer(Указатель)?
Добавлено after 16 minutes 35 seconds:
Адрес может и статичен, но при разыменовывании это переменная, которую можно менять сколько хочешь раз.
И это остаётся всё та же самая k при разыменовывании, которая будет являться переменной. Я вижу это как посредничество потому что адрес переменной r можно вывести на экран без посредничества дополнительных конструкций со звёздочками, что я написал постом выше.
Добавлено after 4 minutes 22 seconds:
Но что самое важное от чего я и путаюсь- это то что в этой упрощённой конструкции выведения адреса на экран я использую спецификатор %p, который происходит от слова Pointer(Указатель). Ну всмысле что ещё надо чтоб назвать это указателем.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: С чего начать программировать микроконтроллеры?
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076650#p4076650"]здесь используется спецификатор %p, который происходит от слова Pointer[/uquote]
Вы мешаете в кучу формат аргументов функции printf (это особый случай) и формат переменных в теле программы.
Разыменование - это лишь форма присвоения/возврата значения переменной по указателю.
Если вы пишите функцию, которая имеет аргументы, то передать в нее значения аргументов вы можете двумя способами - либо указав имя переменной, значение которой передается, либо через указатель, тогда передать в функцию можно значение любой переменной (с размерностью определенной при объявлении указателя) и тогда функция станет универсальной по отношению к аргументу.
Вы мешаете в кучу формат аргументов функции printf (это особый случай) и формат переменных в теле программы.
Разыменование - это лишь форма присвоения/возврата значения переменной по указателю.
Если вы пишите функцию, которая имеет аргументы, то передать в нее значения аргументов вы можете двумя способами - либо указав имя переменной, значение которой передается, либо через указатель, тогда передать в функцию можно значение любой переменной (с размерностью определенной при объявлении указателя) и тогда функция станет универсальной по отношению к аргументу.
Re: С чего начать программировать микроконтроллеры?
Это два разных типа Указателей значит? Ок. Если так, то более понятно.
& get a pointer; %p print a pointer
* а это третий Указатель, который другого вида, ну я не экстрасенс, почему они одинаково их назвали тогда.
& get a pointer; %p print a pointer
* а это третий Указатель, который другого вида, ну я не экстрасенс, почему они одинаково их назвали тогда.
Re: С чего начать программировать микроконтроллеры?
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076650#p4076650"]Это будет являться указателем? int r; printf("%p\n", &r);
Почему нет, если здесь используется спецификатор %p, который происходит от слова Pointer(Указатель)?[/uquote]
А Си здесь причём? Это команда форматирования для функции printf().
Почему нет, если здесь используется спецификатор %p, который происходит от слова Pointer(Указатель)?[/uquote]
А Си здесь причём? Это команда форматирования для функции printf().
Re: С чего начать программировать микроконтроллеры?
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4076660#p4076660"]А Си здесь причём? Это команда форматирования для функции printf().[/uquote]
У меня этот код в Си компилируется, запускается и выдаёт на экран адрес переменной r.
Добавлено after 3 minutes 24 seconds:
& get a pointer; %p print a pointer
* это тоже Указатель.
Как мне кажется очень легко запутаться. Два разных типа указателей в одном выражении.
Добавлено after 1 minute 43 seconds:
Кодом выше я тоже указатель вывел на экран, только другой значит указатель.
Добавлено after 9 minutes 41 second:
Неа. Это всё один вид указателей.
Добавлено after 1 minute 32 seconds:
Может то что со звёздочкой можно назвать переносчиком указателя))
Добавлено after 2 minutes 32 seconds:
Вот то что & и %p могут использоваться без конструкций со звёздочкой наталкивает на мысль что указателем можно назвать сам адрес ячейки.
Добавлено after 1 minute 7 seconds:
А звёздочка как сосуд для указателя, в котором его переносят.
У меня этот код в Си компилируется, запускается и выдаёт на экран адрес переменной r.
Код: Выделить всё
#include <stdio.h>
int main(void) {
int r;
printf("%p\n", &r);
return 0;
}
& get a pointer; %p print a pointer
* это тоже Указатель.
Как мне кажется очень легко запутаться. Два разных типа указателей в одном выражении.
Добавлено after 1 minute 43 seconds:
Кодом выше я тоже указатель вывел на экран, только другой значит указатель.
Добавлено after 9 minutes 41 second:
Неа. Это всё один вид указателей.
Добавлено after 1 minute 32 seconds:
Может то что со звёздочкой можно назвать переносчиком указателя))
Добавлено after 2 minutes 32 seconds:
Вот то что & и %p могут использоваться без конструкций со звёздочкой наталкивает на мысль что указателем можно назвать сам адрес ячейки.
Добавлено after 1 minute 7 seconds:
А звёздочка как сосуд для указателя, в котором его переносят.
Re: С чего начать программировать микроконтроллеры?
Ну вот и настала пора перейти к символам и строкам в Си.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: С чего начать программировать микроконтроллеры?
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076659#p4076659"]Это два разных типа Указателей значит? Ок. Если так, то более понятно.
& get a pointer; %p print a pointer
* а это третий Указатель, который другого вида, ну я не экстрасенс, почему они одинаково их назвали тогда.[/uquote]
Еще раз.
&<variable> - это ЗНАЧЕНИЕ АДРЕСА ПЕРЕМЕННОЙ, а никакой не указатель.
Есть ОБЪЯВЛЕНИЕ указателя (не путать с его употреблением в коде). Форма объявления указателя:
<тип на который указывает> *<имя указателя> - char *a;
Есть ПРИСВОЕНИЕ ЗНАЧЕНИЯ указателю в коде - a=&<variable>; И здесь нет никаких звездочек.
Есть разыменование - *a=12345; это присвоение значения переменной на которую ссылается указатель. И тут вообще указатель не модифицируется.
% - это не знак указателя. Это В ДАННОМ СЛУЧАЕ стартовый символ аргумента функции printf. А p является спецификатором, говорящем о том, что вывод будет по указателю. Предлагаю прочесть описание этой функции, а не фантазировать.
& get a pointer; %p print a pointer
* а это третий Указатель, который другого вида, ну я не экстрасенс, почему они одинаково их назвали тогда.[/uquote]
Еще раз.
&<variable> - это ЗНАЧЕНИЕ АДРЕСА ПЕРЕМЕННОЙ, а никакой не указатель.
Есть ОБЪЯВЛЕНИЕ указателя (не путать с его употреблением в коде). Форма объявления указателя:
<тип на который указывает> *<имя указателя> - char *a;
Есть ПРИСВОЕНИЕ ЗНАЧЕНИЯ указателю в коде - a=&<variable>; И здесь нет никаких звездочек.
Есть разыменование - *a=12345; это присвоение значения переменной на которую ссылается указатель. И тут вообще указатель не модифицируется.
% - это не знак указателя. Это В ДАННОМ СЛУЧАЕ стартовый символ аргумента функции printf. А p является спецификатором, говорящем о том, что вывод будет по указателю. Предлагаю прочесть описание этой функции, а не фантазировать.
Re: С чего начать программировать микроконтроллеры?
Хорошо, я понимаю что это неправильно.
Но здесь явно описание плохое или кто то три раза повторил и все подхватили.
-----------
Вы игнорируете просто аргументы что я пишу.
Да, вижу что неправильная моя теория, но не полностью по моей вине.
Ещё раз логику опишу.
Имеем код:
& - этот знак означает get a pointer что переводится как ПОЛУЧИТЬ УКАЗАТЕЛЬ
К чему я в данном коде применяю &. К переменной r. Для чего? Для получения Адреса этой переменной.
%p - этот спецификатор означает print a pointer что переводится как НАПЕЧАТАТЬ УКАЗАТЕЛЬ.
Что я печатаю с помощью %p. Я печатаю Адрес переменной r с помощью спецификатора %p
Посмотрите с моей стороны. Что я должен думать если всё по логике указывает именно на Адрес переменной.
Может фантазирую, да, Но описание спецификатору и Анперсанде не я придумывал.
Но здесь явно описание плохое или кто то три раза повторил и все подхватили.
-----------
Вы игнорируете просто аргументы что я пишу.
Да, вижу что неправильная моя теория, но не полностью по моей вине.
Ещё раз логику опишу.
Имеем код:
Код: Выделить всё
#include <stdio.h>
int main(void) {
int r;
printf("%p\n", &r);
return 0;
}& - этот знак означает get a pointer что переводится как ПОЛУЧИТЬ УКАЗАТЕЛЬ
К чему я в данном коде применяю &. К переменной r. Для чего? Для получения Адреса этой переменной.
%p - этот спецификатор означает print a pointer что переводится как НАПЕЧАТАТЬ УКАЗАТЕЛЬ.
Что я печатаю с помощью %p. Я печатаю Адрес переменной r с помощью спецификатора %p
Посмотрите с моей стороны. Что я должен думать если всё по логике указывает именно на Адрес переменной.
Может фантазирую, да, Но описание спецификатору и Анперсанде не я придумывал.
- КРАМ
- Друг Кота
- Сообщения: 25172
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: С чего начать программировать микроконтроллеры?
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076679#p4076679"]Но описание спецификатору и Анперсанде не я придумывал.[/uquote]
Тут путаница из-за жаргонов и неточного перевода.
Амперсант означает получение значения ДЛЯ указателя. Формат этого значения соответствует ТИПУ "указатель". То есть в жаргоне только из контекста можно понять о чем идет речь - о самом указателе или об адресах.
Точно так же мешают в кучу разрядность константы(значения) и тип переменной. Например. В жаргоне 0.2345 - это флоат. Но это никакой не флоат, а просто число. И оно может быть присвоено типу int который может быть fixed, то есть переменной с фиксированной точкой.
Добавлено after 3 minutes:
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076679#p4076679"]%p - этот спецификатор означает print a pointer что переводится как[/uquote]
Вы не слышите...
В третий раз. Спецификатором является ТОЛЬКО p. Знак % применяется и с другими спецификаторами, коих целая туча.
Тут путаница из-за жаргонов и неточного перевода.
Амперсант означает получение значения ДЛЯ указателя. Формат этого значения соответствует ТИПУ "указатель". То есть в жаргоне только из контекста можно понять о чем идет речь - о самом указателе или об адресах.
Точно так же мешают в кучу разрядность константы(значения) и тип переменной. Например. В жаргоне 0.2345 - это флоат. Но это никакой не флоат, а просто число. И оно может быть присвоено типу int который может быть fixed, то есть переменной с фиксированной точкой.
Добавлено after 3 minutes:
[uquote="koeltrad",url="/forum/viewtopic.php?p=4076679#p4076679"]%p - этот спецификатор означает print a pointer что переводится как[/uquote]
Вы не слышите...
В третий раз. Спецификатором является ТОЛЬКО p. Знак % применяется и с другими спецификаторами, коих целая туча.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: С чего начать программировать микроконтроллеры?
Что-то тут все в толстый троллинг скатилось…