background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

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

input logo icon
Теги видео
|

Теги видео

программирование
как научится программировать с нуля
как научится программировать
для начинающих
для новичков
научиться программированию
курсы программирования
уроки
visual studio 2017 уроки
visual studio
программист обучение
c уроки
#SimpleCode
как стать программистом
курсы программирования c++
программирование для начинающих
#simplecode c++'
union c++ что это
union c++ пример
использование union c++
что такое union в c++
union си пример
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:01
мы с вами продолжаем изучать
00:00:03
программирование на примере языка си
00:00:05
плюс плюс и сегодня мы будем говорить о
00:00:07
том что такое юнин то бишь объединение
00:00:10
union это такая вещь которая чем-то
00:00:12
напоминает классы и структуры но только
00:00:15
внешне потому что предназначение уюни он
00:00:18
совершенно другое это скажем так
00:00:21
технология которая позволяет
00:00:23
расшаривать то бишь делить одну и ту же
00:00:28
область памяти под разные данные давайте
00:00:32
очень коротко вспомним самая самая
00:00:34
основа когда мы создаем какую-то
00:00:36
переменную объявляем и и помещаем в нее
00:00:40
какие-то данные то по сути у нас в
00:00:42
памяти есть определенное место вот
00:00:45
конкретно под эту наша перемена
00:00:48
где хранятся наши данные недаром
00:00:50
переменная называется имя новой областью
00:00:53
в памяти это скажем так
00:00:55
некий контейнер некая коробочка
00:00:57
предназначена для определенного типа
00:01:00
вещей с определенным типом данных да то
00:01:03
есть если у нас тип переменной int мы
00:01:05
можем туда поместить только целые числа
00:01:07
так вот если мы создаем какую-то другую
00:01:10
переменную неважно на того же самого
00:01:13
типа данных или какого-то другого под
00:01:15
наши данные выбирается другая область
00:01:18
памяти которая именуется так как мы ее
00:01:21
называем данном случае у нас есть две
00:01:23
именованы области в памяти
00:01:25
эта память которую мы именуем переменной
00:01:28
и и память которую мы именуем переменной
00:01:31
и каждой из этих областей в память и
00:01:33
независимо друг от друга они находятся
00:01:36
раздельно и позволяют хранить свою часть
00:01:39
данных так вот union позволяет нам
00:01:42
сделать так чтобы в одной и той же
00:01:45
области памяти мы могли бы хранить и вот
00:01:48
эти данные и вот эти данные то есть по
00:01:52
сути не выделять под каждую переменную
00:01:53
свою собственную область в памяти о
00:01:56
выделить просто какую-то область в
00:01:58
памяти и зависимости от надобности
00:02:00
хранить там те или иные данные к примеру
00:02:03
данной переменной и
00:02:04
или переменной b зачем это вообще нужно
00:02:07
скажем так union это наследие этих
00:02:10
времен как
00:02:11
на компьютерах было очень мало
00:02:13
оперативной памяти и собственно поэтому
00:02:16
приходилось очень жесткой экономить и
00:02:18
придумали вот такой вот выход из
00:02:20
ситуации для того чтобы каким то образом
00:02:22
экономить эту самую память но вполне
00:02:25
возможно если вдруг вы будете писать
00:02:27
какое-то программное обеспечение для
00:02:29
какого-то устройства если взять к
00:02:31
примеру тот самый интернет вещей которая
00:02:34
очень маленькая на котором мало памяти
00:02:36
то вам может и понадобится это знание
00:02:38
какая цена того что мы используем union
00:02:42
что мы можем хранить в одной и той же
00:02:44
области в памяти различные данные данные
00:02:47
разных переменных
00:02:48
ну а это то что в один момент времени мы
00:02:51
можем хранить только те данные которые
00:02:54
принадлежат только одной переменной
00:02:56
потому что память же у нас все таки
00:02:58
ограничена определенным количеством
00:03:00
если мы туда что-то записываем то что
00:03:02
там было до этого теряется и помимо
00:03:05
этого использования
00:03:07
union может привести к очень грубым
00:03:09
ошибкам
00:03:10
если вы зачем-то не уследить и потому
00:03:12
что если вы за перри запишите какую-то
00:03:14
из этих переменных которые находятся в
00:03:16
union а попытаетесь использовать другую
00:03:20
кто вы получите какую-то недостоверную
00:03:22
информацию ну и результат работы в таком
00:03:25
случае вашей программы будет просто
00:03:27
непредсказуемой давайте перейдем к
00:03:28
практике вот это мы все удалим и
00:03:31
посмотрим как описывается тот самый
00:03:33
union синтаксис похож на синтаксис
00:03:37
класса и структуры но в ближе к
00:03:39
структуре набираем ключевое слово union
00:03:41
здесь мы говорим о том что собственно то
00:03:44
что пойдет дальше у нас будет июня нам
00:03:46
здесь название нашего union а но в
00:03:50
принципе то же самое что и с классом или
00:03:54
структурой да вот это вот как будто бы
00:03:56
наш собственный тип данных но только в
00:03:58
данном случае это не класс и не
00:03:59
структура а именно juneau
00:04:01
далее мы можем определить в этом unii
00:04:04
unii поля переменных собственно которые
00:04:07
между собой будут разделять одну и ту же
00:04:09
область в памяти давайте определим
00:04:11
несколько таких полей short int просто
00:04:14
int и флот
00:04:17
в чем разница между этими тремя
00:04:20
переменными давайте посмотрим на
00:04:22
табличку здесь у нас имеется табличка с
00:04:24
типами данных подобную табличку я уже
00:04:25
когда-то приводил своих уроках суть в
00:04:28
чем в том что мы использовали разные
00:04:30
типы данных и некоторые из этих типов
00:04:33
данные занимают различное количество
00:04:35
байт в оперативной памяти к примеру
00:04:38
посмотрим на short int он занимает в
00:04:40
памяти 2 байта
00:04:42
и может хранить вот такие вот диапазоны
00:04:44
чисел int обыкновенный int целое число
00:04:48
занимает уже четыре байта но это для
00:04:50
32-битной платформы и может хранить уже
00:04:53
гораздо больше диапазон чисел флот тоже
00:04:56
занимает четыре байта
00:04:57
но он хранит дробные числа поэтому
00:04:59
собственно хранения этого типа данных
00:05:02
хотя он тоже занимает четыре байта
00:05:04
каким-то организовано по другому что это
00:05:06
все значит для нас это значит для нас
00:05:09
что у нас в июне они есть различные типы
00:05:12
данных
00:05:13
один из которых для хранения данных в
00:05:16
памяти требует меньше места чем
00:05:18
остальные как поступает union в таком
00:05:21
случае union выделяет под общий нужды между
00:05:24
всеми этими переменными которые в нем
00:05:26
есть но в данном случае у нас здесь 3 их
00:05:28
типом то количество памяти которая
00:05:30
требуется для самой большой переменой
00:05:32
переменной которая занимает больше всего
00:05:34
места в оперативной памяти и в
00:05:36
дальнейшем если мы попытаемся вот эту
00:05:38
вот выделенную память
00:05:40
записать данные от переменной которая не
00:05:42
требуется такое большое количество байт
00:05:44
столько места то будут использованы
00:05:47
только те
00:05:48
байты которые нужны конкретно для нашей
00:05:51
переменной остальные же байты просто по
00:05:53
забиваются нулями использоваться не
00:05:54
будут теперь создадим объект нашего июня
00:05:57
на и посмотрим как он работает синтаксис
00:06:00
создания объекта union такой же самое
00:06:03
как при создании объекта структуры или
00:06:05
объекта класса но указываем как тип
00:06:08
данных наш собственный union который мы
00:06:10
писали он нас так и называется моей
00:06:12
union и
00:06:13
имя для него я его просто назову у и
00:06:16
теперь его полям то бишь переменным и би
00:06:20
си мы присвоим какие-то значения
00:06:21
переменной мы происходим пятерку
00:06:24
переменную
00:06:26
b присвоим 40000 а в переменной си
00:06:30
какое-то дробное число теперь для того
00:06:33
чтобы понять как там все хранится и
00:06:36
работает нам потребуется просто-напросто
00:06:39
запустить нашу программу в отладчике
00:06:40
посмотреть что происходит с полями union
00:06:43
когда мы присваиваем в не какое-то
00:06:44
значение давайте закрепим все поля чтобы
00:06:51
они отображались у нас на экране будем
00:06:52
наблюдать за тем как они изменяются и
00:06:54
так 24 строчка кода сейчас она будет
00:06:58
выполняться в переменную и присвоится
00:07:00
пятерка обратите внимание именно на поле
00:07:03
и вот здесь вот этой вот штуки которые
00:07:05
есть час шевелю присваиваем пятерку все
00:07:09
хорошо все отлично работает как я вам
00:07:11
говорил union разделяет между теми
00:07:14
переменными которые являются частью
00:07:16
этого junio на одну и ту же область
00:07:19
памяти то есть все переменные пишут в
00:07:21
одну и ту же память свои данные поэтому
00:07:24
если мы помещаем данные в одну из
00:07:26
переменных то понятное дело что раз
00:07:28
память 1 этажа
00:07:29
мы данные других переменных замещаем
00:07:33
новыми данными таким образом когда мы
00:07:35
сейчас на двадцать пятой строчке кода
00:07:37
поместим в переменную b число 40 тысяч
00:07:40
данные в переменной by станут 40000 а в
00:07:44
переменной и
00:07:45
оси будет мусор на самом деле это не
00:07:49
совсем мусор чуть чуть позже мы к этому
00:07:51
моменту вернемся рассмотрим более
00:07:53
подробно но не значение переменной а и
00:07:56
не значение переменной сид для нас
00:07:58
теперь больше не актуально потому что
00:08:01
это просто рандомные числа но на
00:08:05
самом-то деле они не совсем рандомные
00:08:07
но какой-то реальной пользы они не несут
00:08:10
и взаимодействия с ними нет никакого
00:08:12
смысла вот этим моментом нужно быть
00:08:14
осторожным в этом заключается опасность
00:08:16
union так как мы разделяем общую область
00:08:19
памяти между разными переменными то
00:08:22
использовав какую-то другую переменную
00:08:25
по 100 как мы записали предыдущую мы
00:08:28
получим какой-то непредсказуемый
00:08:29
результат потому что получим просто
00:08:31
какой-то мусор следующим шагом на
00:08:34
двадцать шестой строчке кода у нас
00:08:36
является присвоение в переменную си
00:08:37
дробного числа
00:08:39
смотрим что у нас вот здесь будет
00:08:41
происходить и так в переменное сенаж и
00:08:44
дробное число а в переменной b и
00:08:47
и какие-то новые значения то бишь в один
00:08:49
момент времени так как память у нас
00:08:51
общие мы можем только для одного поля
00:08:55
union хранить какие-то данные и с этим
00:08:57
нужно быть очень осторожным я думаю
00:09:00
здесь в принципе все понятно все
00:09:02
достаточно просто но давайте рассмотрим
00:09:04
этот момент более подробно в графической
00:09:09
схеме как я сказал union для создания
00:09:11
объекта uni она выбирает и выделяет в
00:09:15
памяти столько байт под свой собственный
00:09:18
объект сколько места в памяти может занимать
00:09:22
наибольшей объект в этом you него не но
00:09:24
чтобы в любом случае хватило у нас тип
00:09:27
int и тип float и для 32-битной
00:09:29
платформа занимает по четыре байта
00:09:31
поэтому наш union сейчас будет занимать
00:09:33
четыре байта случай когда мы помещаем
00:09:35
наш union short int вот здесь к примеру
00:09:39
до пятерочку наш short int использует
00:09:42
только два байта поэтому если мой union
00:09:44
помещаем short and the мы используем два
00:09:48
байта остальная место для нашей
00:09:51
переменной просто не нужно поэтому их до
00:09:54
помещается 0 и двадцать пятой строчке
00:09:57
кода когда мы помещаем в переменную b
00:09:59
новые данные что происходит с тем что у
00:10:02
нас уже лежала в этом uni ну понятное
00:10:04
дело раз область памяти тоже самое то
00:10:06
просто туда перезаписывается новые
00:10:08
данные прямо поверх старых переменная b
00:10:11
у нас int-овое то есть она будет
00:10:12
использовать все байты нашего юня она
00:10:14
все четыре байта и когда мы помещаем
00:10:17
туда переменную си тому же дробное число
00:10:19
там тоже четыре байта но тип данное
00:10:21
другой это дробное число она хранится в
00:10:23
памяти иначе вместо переменной тоже
00:10:25
займет все но немножечко по другому там
00:10:27
будут расположены байты и
00:10:29
интерпретироваться это число будет
00:10:31
по-другому теперь вопрос вот мы сейчас
00:10:34
присвоили последним нашим действиям
00:10:37
переменную си в наш union с переменной
00:10:40
сессию хорошо и теперь мы говорим нашим
00:10:42
уюни а ну отдай к нам данные с
00:10:45
переменной и сном это никто не запрещает
00:10:46
мы же можем там посмотрим что там лежит
00:10:48
что данном случае происходит я вам
00:10:51
сказал что там мусор но
00:10:52
а не совсем так там же лежат данные из
00:10:54
другой переменной а мы знаем что
00:10:56
переменная short int занимает два байта
00:10:59
и хранить свои данные только первых двух
00:11:01
ячейках поэтому мы извлечем
00:11:03
эти данные затем двух ячеек и попытаемся
00:11:06
их интерпретировать как short int
00:11:08
ну по сути тот нам будет какое-то число
00:11:10
ведь это просто последовательность
00:11:12
байтов которая будет интерпретировано
00:11:14
как short int но что там будет но нам в
00:11:17
принципе все равно это для нас рандомное
00:11:19
число потому что мы его никак не можем
00:11:21
использовать но не несет какой-то
00:11:22
ценности
00:11:23
то же самое будет если мы пытаемся
00:11:25
извлечь из лобби
00:11:26
из вот этой вот последовательности байт
00:11:29
на самом деле там хранится дробное число
00:11:32
мы пытаемся его интерпретировать как
00:11:34
целое число из последовательность байт
00:11:37
будет для целого числа совершенно другая
00:11:39
и мы опять получим какое-то не
00:11:41
предсказуемое число непредсказуемое
00:11:42
поведение поэтому там хоть и не совсем
00:11:46
мусор да там лежат данные но для нас это
00:11:48
мусор потому что они просто бесполезно
00:11:50
достаточно небезопасное вещи с ней нужно
00:11:53
быть очень аккуратным и собственно этом
00:11:55
у меня все если вам понравился этот урок
00:11:57
был для вас интересным и полезным не
00:11:59
забудьте поставить лайк под этим видео
00:12:01
от этого зависит развитие канала если у
00:12:03
вас есть желание поддержать мой канал
00:12:04
финансовую информацию о том как это
00:12:06
сделать найдете внизу в описании под
00:12:07
этим видео делитесь этим уроком своими
00:12:10
друзьями которые защищают
00:12:11
программирования для них это будет
00:12:12
полезно ну и конечно же если вы не
00:12:14
подписаны на канал то обязательно
00:12:15
сделайте это здесь уже есть и будет еще
00:12:17
много полезных интересных уроков для вас
00:12:20
всем спасибо за внимание пока

Описание:

Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=) ✅ https://www.donationalerts.com/r/simplecode ✅ Telegram канал https://t.me/SergeySimpleCode Уроки по программированию ✅Наша группа ВК https://vk.com/smplcode ✅Подписывайтесь на канал https://www.youtube.com/channel/UCtLKO1Cb2GVNrbU7Fi0pM0w

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Union | Использование в С++ | Изучение С++ для начинающих. Урок #141"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Union | Использование в С++ | Изучение С++ для начинающих. Урок #141" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Union | Использование в С++ | Изучение С++ для начинающих. Урок #141"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Union | Использование в С++ | Изучение С++ для начинающих. Урок #141" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Union | Использование в С++ | Изучение С++ для начинающих. Урок #141"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Union | Использование в С++ | Изучение С++ для начинающих. Урок #141"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.