Программирование на C. Урок 28. Указатели на структуры

  Рет қаралды 8,586

narod stream

narod stream

Күн бұрын

Пікірлер: 36
@gintarasbaranauskas2035
@gintarasbaranauskas2035 4 жыл бұрын
Вы не поверите. С микроконктроллерами професионально работаю уже более 20 лет. В университете расказывали про Pascal, а C учил самостоятельно. Но какая там учёба - дочитал книжку до того места, где разговор начинается про указатели, и бросил. Вот так и работал избегая указателей. Но на ATMEL AVR они особенно и не нужны. Я конечно же их использовал по принципу Copy-Paste, но представление как это всё работает имел довольно мутное. А четыре года назад почти полностью перешёл на STM32. И вот тут без указателей ни куда. Но как то выкручивался из ситуацыи. И совершенно случайно на KZbin наткнулся на вашы уроки. На конец то с указателями всё стало на свои места :) Огромное вам спасибо! Дай Бог вам здоровие и терпеливость, при создании таких замечательных уроков!
@narodstream552
@narodstream552 4 жыл бұрын
Спасибо огромное за такой тёплый и добрый комментарий!
@ElliottGrosvenor
@ElliottGrosvenor 2 жыл бұрын
Братан, снимаю шляпу! Ты прям неуловимый Джо, столько лет работавший в такой довольно низкоуровневой нише программирования без понимания, как работают указатели. Браво!!!
@ОлегГромов-л2д
@ОлегГромов-л2д 3 жыл бұрын
Очень глубокое, полезное погружение в тему. Спасибо Вам за ваши труды! К сожалению, судя по количеству лайков, не так много "будущих программистов" в состоянии это оценить. Очень жаль, очень....
@ElliottGrosvenor
@ElliottGrosvenor 2 жыл бұрын
Имхо, самый правильный способ объявления структурных типов вот такой: typedef struct { char nm[60]; uint8_t age; uint8_t course; } student, *p_student; Теперь нет никаких проблем в объявлении переменных как типа самой структуры, так и указателей на нее, например: student st1, st2, st3; p_student st1_p, st2_p, st3_p; И не забывать выделять память для указателей! Хоть статически, хоть динамически. Чтоб не было segmentation fault как у автора в процессе видео. st1_p = &st1; st2_p = malloc(sizeof(student)); ...... free (st2_p); А в целом, хорошая лекция, для начинающих самое то.
@stalkerk750
@stalkerk750 5 жыл бұрын
Спасибо большое за понятное объяснение!
@taurus9238
@taurus9238 Жыл бұрын
НЕ ВИДЕО, А СКАЗКА🦒🦒
@trampblack7317
@trampblack7317 5 жыл бұрын
Спасибо Вам за ваши уроки.
@liliansirbu9443
@liliansirbu9443 4 жыл бұрын
хех. привет. этот урок мой самый любимый. к стати, ты часто вспоминаешь мелку логику в твою молодость. так выбери FPGA, Lattice, Xilinx, Altera/Intel. доедешь до виртуальных процесоров, сделанные на мелкой логике тебя реально бомбанет. я уже молчю про xilinx zynq и cyclone v soc. я взялся за это дело из за DSP фильтрацию в реалном времени. а в прочем DSP фильтрацию и FFT можно сделать и на STM32F4, но это я не заметил у тебя пока что. а в прочем FPGA не дороже STM Disovery F4 или F7 потому решил склонялся в сторону FPGA. ну так вот такие дела. в общем тебе удачи и большое спасибо за твое творчество.
@sytyluipes
@sytyluipes 3 жыл бұрын
Спасибо!
@СерегаКостин-ш5б
@СерегаКостин-ш5б 4 жыл бұрын
благодарю
@nickvirus9463
@nickvirus9463 5 жыл бұрын
Вижу добро, ставлю лайк!
@nickvirus9463
@nickvirus9463 5 жыл бұрын
Было бы хорошо сумировать преимущества и недостатки каждого елемента вконце видео. Каждая операция занимает некоторое время, интересно, есть ли разница по времени выполнения и компиляции (*а).b от а->b?
@narodstream552
@narodstream552 5 жыл бұрын
Согласен, но дальше затягивать урок некуда, а то уйдём от темы слишком далеко. Тема не совсем по оптимизации. Думаю, что это сделает каждый самостоятельно.
@nickvirus9463
@nickvirus9463 5 жыл бұрын
@@narodstream552 Если Вы этого не сделаете то врятли кто то сделает))
@ThisDaveAndThatJohn
@ThisDaveAndThatJohn 5 жыл бұрын
возьмите сами да и сделайте бенчмарки, как будто с ядерной бомбой работаете. Программирование оно тем и прекрасно, что максимум кто настучит по башке так это компилятор или сама ОСь позаботится чтобы не начудили, ничего больше не произойдет.
@timelord1137
@timelord1137 5 жыл бұрын
Вопрос быстродействия поднимался в одном из недавних уроков. Можно зайти в дизассемблер и все увидеть своими глазами
@xbevice
@xbevice 5 жыл бұрын
(*a).b и a->b с точки зрения компилятора операция одинаковая. Обращение по указателю или через точку для любой структуры которая не влезла в регистры - полностью идентичное действие. А если влезет, оптимизатор все равно приведет к одному виду. Так что используйте, что удобно.
@nikolayla___v7158
@nikolayla___v7158 Жыл бұрын
Спасибо, "въехал" с второго (2) захода...
@ozn_
@ozn_ 5 жыл бұрын
вот интересен такой вопрос: есть структура struct student { uint8_t A uint8_t B uint16_t C uint16_t D }st ; можно ли в цикле через указатели подсчитать "контрольную сумму" всех байт , типа этого : uint8_t CRC=0; CRC+=st.A; CRC+=st.B; CRC+=st.C&0xff; CRC+=st.C>>8; CRC+=st.D&0xff; CRC+=st.D>>8; но делать именно автоматом , в цикле
@kovesik
@kovesik 5 жыл бұрын
Это тебе не Си шарп, сударь)
@kovesik
@kovesik 5 жыл бұрын
И то не уверен что там можно, вроде в поп можно по полям бегать
@xbevice
@xbevice 5 жыл бұрын
Илья Новиков указатель на структуру это просто адрес. Что по этому адресу лежит по большому счету никого не волнует, приведите этот адрес с uint8_t* и в цикле проходите с инкрементом указателя.
@nickvirus9463
@nickvirus9463 5 жыл бұрын
Гитхабом не пользуетесь?
@narodstream552
@narodstream552 5 жыл бұрын
А обязан? Вроде в Конституции не прописано.
@nickvirus9463
@nickvirus9463 5 жыл бұрын
@@narodstream552 =) Ну это же тоже площадка с которой можно трафик вести на свой сайт)
@narodstream552
@narodstream552 5 жыл бұрын
Вы думаете, я не знаю эту площадку? А почему я не могу использовать свой сайт? Гитхаб мне за его пиар не платит.
@nickvirus9463
@nickvirus9463 5 жыл бұрын
@@narodstream552 Факт в том, что там большое количество людей находят много чего интересного для себя. Как мне кажется, сначала стоит попробовать использовать площадку в своих целях, а потом уж делать выводы. Или Ваши исходники имеют не подходящить тип лицензирования? И если Вам интересней развивать свой ресурс, тогда может стоить делать акцент на статьи в каждом видео. Все понимают что к экранизации второй части последней книги Гарри Поттера, уже все увлеченные дочитали книгу JK Rowling, не сумев так долго ждать. Ваши уроки достаточно увлекательны, по этому Вы можете воспользоваться этим.
@narodstream552
@narodstream552 5 жыл бұрын
Я считаю, что это частная беседа, давайте этим займёмся где-то в другом месте, не в публичном обсуждении темы урока.
@ericc5652
@ericc5652 5 жыл бұрын
struct student { char nm[60]; unsigned char age; unsigned char course; } *st; st = (student*)malloc(sizeof(student)); //выделение памяти размером c тип student
@narodstream552
@narodstream552 5 жыл бұрын
Я знаю. Не будем торопиться. Это тема другого урока, по управлению памяти будет урок. Поэтому я специально это не стал использовать (динамическое выделение памяти).
@nickvirus9463
@nickvirus9463 5 жыл бұрын
@@narodstream552 Я думаю что изначально он хотел опредилить указатель на анонимную структуру) и ее проинициализировать))
@ElliottGrosvenor
@ElliottGrosvenor 2 жыл бұрын
@@nickvirus9463 Все верно, а получился факап.
@ElliottGrosvenor
@ElliottGrosvenor 2 жыл бұрын
Все верно. Но явное приведение типа возвращаемого указателя из malloc теперь совершенно необязательно. В соответствии с последним стандартом, тип void* приводится к указателю любого типа и наоборот без дополнительных "приседаний"
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 15 МЛН
黑天使被操控了#short #angel #clown
00:40
Super Beauty team
Рет қаралды 60 МЛН
Урок 15 - Тип данных структура
28:54
Иван Гончаров
Рет қаралды 537
Выделение и освобождение динамической памяти в Си
27:39
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 15 МЛН