Union | Использование в С++ | Изучение С++ для начинающих. Урок

Поделиться
HTML-код
  • Опубликовано: 19 май 2018
  • Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
    ✅Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
    ✅ www.donationalerts.ru/r/simple...
    ✅ Telegram канал t.me/SergeySimpleCode
    Уроки по программированию
    ✅Наша группа ВК smplcode
    ✅Подписывайтесь на канал / @simplecodeit

Комментарии • 76

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +24

    *Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*

  • @andrewbistroff7558
    @andrewbistroff7558 6 лет назад +29

    Сергей спасибо вам за ваше время которое вы тратите на нас, ждем интересного приложения на с++ и не одного, для закрепления полученных знаний, вы топ.

  • @Penat_Vilikirentiy
    @Penat_Vilikirentiy 6 лет назад +80

    Сделайте пожалуйста реальный бюджетненький проект на с++ в несколько уроков чтобы применить полученные знания, очень хочется практики под вашим руководством)

    • @user-gv1zx8cq4l
      @user-gv1zx8cq4l 4 года назад +3

      На С++ сделать что-то прикладное задача не простая), много времени надо потратить), возможно автор не располагает стольким временем

  • @andreyzavalishchev4818
    @andreyzavalishchev4818 6 лет назад +2

    Сергей, спасибо за информативный урок!

  • @user-sp9yg5jk3m
    @user-sp9yg5jk3m 2 года назад

    Отличные уроки! Большое спасибо за то что продолжаете делать их!

  • @pavelios3577
    @pavelios3577 5 лет назад +1

    Спасибо за урок Сергей.

  • @Ermine882
    @Ermine882 6 лет назад +3

    Спасибо за урок!

  • @user-fm4ni2mc8j
    @user-fm4ni2mc8j 4 года назад +3

    Здоровенное спасибо автору!!!

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +9

    #union #SimpleCode #урокипрограммирования

    • @greatskydrake9531
      @greatskydrake9531 3 года назад

      простите, а где может быть полезен union ?

  • @dillonx992
    @dillonx992 11 месяцев назад +1

    Познавательно, спасибо

  • @user-rp6qg4yg2c
    @user-rp6qg4yg2c 5 лет назад +4

    Спасибо за урок! Было бы очень здорово, что бы были домашние задания.

  • @digitalturkistan1857
    @digitalturkistan1857 6 лет назад +4

    Спасибо за вклад науке

  • @KurpatovInstagram
    @KurpatovInstagram 6 лет назад +3

    thanks!

  • @AlexArGC
    @AlexArGC 20 дней назад

    Спасибо за ваш труд! Круто!
    union очень здорово помогает при приеме потоковых данных, когда ты складываешь байты с шины UART например в структуру по байтно а на выходе получаешь уже готовую структуру с float, double и т.п. разве что стоит проверить MBS и LBS. Часто так делали в устройства где между платами много обмена....
    А работа с битовыми структурами + union ваще огонь в МК. Там на всем экономят.

  • @Versie2007
    @Versie2007 6 лет назад +3

    Достаточно интересная тема, за пределами основ c++. Лайк за неожиданность :)

    • @goretswot4019
      @goretswot4019 6 лет назад

      почему неожиданность?)после классов идет struct после union)) законоерная последовательность

  • @l_Nuril_l
    @l_Nuril_l 2 года назад +4

    1 -> О чёрт прости.
    2 -> Не извиняйся, мой батя учил не стеснятся экономии места с union. Особенно когда они такого размера.
    1 -> Да твой батя постарался.
    2 -> Они экономят больше если я их сожму.
    1 -> Хммм.
    2 -> Иногда, я так увлекаюсь оптимизацией, что сбиваюсь с задачи.
    1 -> О, а мой батя как раз рассказывал как не сбиваться с задачи используя чьи-то фреймворки на union вместо своих.
    2 -> Ты покажешь мне?
    1 -> С превеликим удовольствием.
    Кто понял отсылку лайк)

  • @tapirskiy
    @tapirskiy 4 года назад +4

    Сергей, огромное спасибо Вам за уроки, была бы Вам очень благодарна, если бы Вы сделали небольшой обзор наиболее популярных графических библиотек

  • @eterniumsoul
    @eterniumsoul 6 лет назад +3

    Круто, очень внятное объяснение. Спасибо. Во всех вводных статьях вобще не освящают юнионы, говорят только что они такие же как и структуры -_-

  • @kishivi
    @kishivi 3 года назад +7

    Важное замечание
    При записи (например) float в union мы используем все 4 байта памяти. Когда же мы хотим взять из этого же unium'а short int(2 байта), то мы будем кушать не первые 2 байта, а последние. Т.е., запись более маленьких переменных производится в конец выделенной памяти, а не в начало (как показано в ролике в paint'e)

    • @Hippan_
      @Hippan_ 2 года назад +4

      автор прав. Байты хранятся в перевернутом виде.
      к примеру, изначально выделилась память с мусором (в HEX-e удобней) 0d f0 ad ba
      записали мы short 12 она стала 0с 00 ad ba, затронулись только 2 байта. Затем загнали мы int 40000(0x9c40) стала 40 9с 00 00 затронулись четыре байта.

  • @miroslavklyukovsky683
    @miroslavklyukovsky683 2 года назад +1

    Спасибо!

  • @mykhailomorhal2181
    @mykhailomorhal2181 6 лет назад +1

    Спасибо)

  • @user-ci2ku2oo5u
    @user-ci2ku2oo5u 6 лет назад +4

    Мега круто))Только сегодня в книге наткнулась на задачу с применением union)))И заметила ваш урок))Огромное спасибо))

    • @user-kd7tg7yp5f
      @user-kd7tg7yp5f 4 года назад

      Можно ссылочку на книгу? Или название

    • @user-uj6je7uc7h
      @user-uj6je7uc7h 4 года назад

      Михаил Стоун вряд ли через 2 года Вероника сможет заметить твой вопрос)
      Но от хорошей книги с задачами и я бы не отказался

    • @user-yg8mt9fy8l
      @user-yg8mt9fy8l 3 года назад +3

      @@user-uj6je7uc7h А ведь ему так и не ответили

    • @Viktor_Kardakov
      @Viktor_Kardakov 10 месяцев назад

      так и не ответили...

  • @user-kb6qd8rg4g
    @user-kb6qd8rg4g 4 года назад

    спасибо

  • @yippeeki-yey
    @yippeeki-yey 6 лет назад

    Полезная вещь

  • @sleepyNovember_project
    @sleepyNovember_project 4 месяца назад

    Да уж, кажется бесполезной штукой, по крайней мере для пк и смартфонов, но объяснение очень понятное, это топчик.

  • @user-zc6jg3fd7r
    @user-zc6jg3fd7r 4 года назад +2

    Они не бесполезны. Данное свойство удобно при написании функций шифрования, при добавлении блоков текста, трансформированных в инт через юнион.

    • @hokinhim
      @hokinhim 2 года назад

      Можете пожалуйста более подробно объяснить, что вы имеете в виду, касаемо добавления блоков текста? Столкнулся с задачей обработки больших текстов (от полугигабайта) и ищу способы оптимизации, может быть union в этом деле будет очень полезным. Спасибо.

  • @alexandrsargsyan2202
    @alexandrsargsyan2202 2 года назад

    maladec

  • @denys2957
    @denys2957 6 лет назад +6

    Вооу, для меня это очень похоже на роботу с регистрами из Ассемблера, интересно, познавательно👌👍

    • @roman_roman_roman
      @roman_roman_roman 3 года назад +5

      роботу...🤦‍♂️

    • @denys2957
      @denys2957 3 года назад

      @@roman_roman_roman Раманчик, если ты обращаешь внимание автора на грамматические ошибки в 2020 то
      У тебя либо не закончился пубертат, либо тебе нужны пилюли в мозг
      Санитар, пилюлю

    • @roman_roman_roman
      @roman_roman_roman 3 года назад

      @@denys2957 , какой я тебе "Раманчик", дятел? И при чем здесь пилюли и пубертат? Набор слов.

    • @denys2957
      @denys2957 3 года назад

      @@roman_roman_roman Раманчик, сам ты дятел)
      Для тебя это набор слов, потому что ты не понимаешь их смысла

    • @roman_roman_roman
      @roman_roman_roman 3 года назад +1

      @@denys2957 , забавно, ты говоришь о словах, но не можешь написать элементарное слово "работа" без ошибок, и это в 2020, когда проверить правописание супер легко. Тут ни санитары, ни пилюли уже не помогут.

  • @talesuleymanov4778
    @talesuleymanov4778 6 лет назад +2

    Privet spasibo za urok.s neterpeniyem jdu uroki po c#

    • @proKaps
      @proKaps 6 лет назад +2

      Нет! Не надо C#! Лучше пусть автор освоит Unreal Engine и обучает нас C++ под Unreal Engine! А то на русском ничего хорошего нет вообще (да и плохого мало).

  • @sergeykirdyankin7027
    @sergeykirdyankin7027 Год назад +2

    Возможно есть смысл рассказать про int32_t .... и т.д.

  • @Scrayerful
    @Scrayerful 3 года назад +1

    Не упомянули, добавлю: всегда считал union чем-то экзотическим и бесполезным. Пока мне не понадобилось вычитать float по шине i2c, чтение с которой осуществляется побайтно.
    Дак вот, почему union до сих пор востребован: интерпретация одних и тех же данных, как разные типы.
    Помещаем в Юнион массив из четырех uint8 и один float.
    Считываем данные побайтно в элементы массива, а во float имеем полноценное число.

  • @aturlanov
    @aturlanov 2 года назад +1

    А если мы в 4 байта записываем значение a (2 байтное), а потом записываем значение b (2 байтное), то b запишется в область поверх значения a, или добавиться в свободное место?

    • @not_today_better_now
      @not_today_better_now 7 месяцев назад

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

  • @isorport32
    @isorport32 5 лет назад +2

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

  • @user-iy5kd3tz3d
    @user-iy5kd3tz3d 3 года назад

    а есть смысл сейчас использовать union в современном С++ или это уже пережиток прошлого и такую вещь стоит использовать только в чем-то низкоуровневом например драйвер или разработка под микроконтроллеры ?

  • @user-nd4sl1lp9b
    @user-nd4sl1lp9b Год назад

    Хорошо иметь хоть малое представлении о юнион.Но в наше время можно про это ничего не знать.

  • @evgenykonovalov4870
    @evgenykonovalov4870 2 года назад

    ты царь

  • @gamephoenix666
    @gamephoenix666 6 лет назад

    какая тема будет следующей ?????

  • @wldzam
    @wldzam 3 года назад

    txs

  • @ahtungs6274
    @ahtungs6274 5 лет назад

    Хороший конвертер получается из типа int в тип float. И наоборот

    • @vitusink6445
      @vitusink6445 4 года назад +3

      Лучший конвертер это приведение типов :)

    • @user-ur3mc6hb5d
      @user-ur3mc6hb5d 6 месяцев назад

      ​@@vitusink6445он немного другое имел ввиду. Если сделать приведение типов из флоат в инт, то двоичные данные тоже изменятся. А в этом случае такого не произойдёт

  • @realkjasonstatham
    @realkjasonstatham 2 года назад

    Комментарий

  • @nexusgaming1912
    @nexusgaming1912 3 года назад

    А где самое главное, как получить правильное значение переменной из Union?

  • @melonplayground5975
    @melonplayground5975 4 года назад

    Хммм, Union основан на кольцевом буфере?

    • @vitusink6445
      @vitusink6445 4 года назад +1

      Он основан на одной ячейке памяти, которую постоянно затирает, а потому актуальна только последняя переменная.

  • @user-mg6zc2tw3i
    @user-mg6zc2tw3i 5 лет назад

    К 1:30 понял к чему ты клонишь

  • @apelsin3001
    @apelsin3001 4 года назад

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

    • @alexandrvolchkov1619
      @alexandrvolchkov1619 2 года назад

      Очень удобно для обмена данными через порты ввода/вывода. Пакет для обмена может состоять из любых типов данных, а в порт отправляется/принимаются байты.

  • @secretsecret1713
    @secretsecret1713 6 месяцев назад

    У меня все равно вопрос, извините за мой французкий, нах...я? Я вот читаю книги по более углубленным темам программирования и вот часто натыкаюсь на юнионы в коде, со структурами понятно, они как бы примитив классов и в низкоуровневом программирований они необходимы. Но вот с юнионами я никак не могу понять их назначения. Зачем объединять разные поля в один юнион, смысл?

    • @arthurr172
      @arthurr172 6 месяцев назад

      Объединения (union) также позволяют определить свой тип данных и также хранят набор элементов, но в отличие от структуры все элементы объединения имеют нулевое смещение. А это значит, что разные элементы занимают в памяти один и тот же участок, то есть в памяти они накладываются друг на друга.

    • @sleepyNovember_project
      @sleepyNovember_project 4 месяца назад

      Например, создашь ты 4 переменных
      int a;
      int b;
      double c;
      double d;
      в общем выделится 24 байта, даже если не используешь эти переменные.
      Если же записать в Union
      union numeric
      {
      int a;
      int b;
      double c;
      double d;
      };
      Хоть всё можно будет использовать только попеременно, но зато это объединение займёт 8 байт вместо 24
      Выглядит как неплохая экономия для каких-нибудь микрочиповых устройств, чтобы писать что-нибудь нормальное для них, укладываясь а их лимиты.
      P.S. Но думаю смысла записывать одинаковые типы данных по несколько раз не то что бы много, если только чтобы у них были разные имена для визуального удобства.

  • @RUSlTUZ
    @RUSlTUZ 5 лет назад +1

    Короче говоря, практически бесполезная хрень в современных реалиях

    • @vitusink6445
      @vitusink6445 4 года назад

      Несомненно. Компромисс это всегда некое извращение.

  • @Antonov_Ivan.
    @Antonov_Ivan. 4 месяца назад

    Спасибо за урок!

  • @DD0S2
    @DD0S2 3 года назад

    спасибо