Vlad Jpeg
Vlad Jpeg
  • 15
  • 65 515
Как работает блокчейн? (на примере криптовалюты Биткоин)
В этом видео я расскажу о том, как работает блокчейн на примере криптовалюты Биткоин.
#crypto
#bitcoin
#blockchain
#technology
#money
#cryptocurrency
#cryptocurrencies
มุมมอง: 266

วีดีโอ

Boot процесс в embedded системах на основе linux
มุมมอง 1.4Kปีที่แล้ว
#linux #kernel #programming #bootsystem #embedded_systems #softwareengineer
Vizualization Of Bubble Sort
มุมมอง 2032 ปีที่แล้ว
"Bubble sort, sometimes referred to as sinking sort, is a simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted." (c) GeeksforGeeks In this video, I vizualize bubble sort algorithm. I used C and SFML lib. to create this video. www.geeksforgeeks.org/...
My Game In C++ using SFML lib
มุมมอง 3392 ปีที่แล้ว
This is my game "HINKELLER" written in C using SFML library. Source code can be found by link: github.com/Vladddd46/hinkaller_game
Сокеты в программировании. Пишем свой сервер и клиент.
มุมมอง 24K3 ปีที่แล้ว
Привет, в этом видео я расскажу о том, что такое сокеты в программировании. Также я реализую пример сервера и клиента на языке программирования Python, чтобы показать как работают сокеты на практике. 🌵🌵🌵🌵🌵🌵🌵🌵🌵🌵 Репозиторий с реализацией клиента и сервера на java, c, python: github.com/Vladddd46/servers_examples 🌵🌵🌵🌵🌵🌵🌵🌵🌵🌵 Полезные ссылки: www.geeksforgeeks.org/tcp-server-client-implementation-i...
Пишем telegram бота на Python. От идеи до реализации.
มุมมอง 7603 ปีที่แล้ว
В этом видео я расскажу о своей идеи бота в телеграм, а потом реализую эту идею на языке программирования Python. #телеграм_бот_на_пайтон #python #telegram_bot
Алгоритм Дейстры (+ реализация на си)
มุมมอง 2.7K3 ปีที่แล้ว
👀.Канал Юрия Лебедя: th-cam.com/channels/nxAgBhXddL7IbzT0Kpv3kQ.html 👀 🖥 Код из видео: github.com/Vladddd46/dijkstraAlgorithm 🖥 В этом видео я расскажу об алгоритме Дейкстры. Алгоритм Дейсктры это чудесный алгоритм, который позволяет найти кратчайшие пути от одной вершине графа, ко всем остальным. Также я показал реализацию этого алгоритма на языке программирования Си. #дейстра #алгоритмы #прог...
Бинарное дерево (+реализация на С)
มุมมอง 7K3 ปีที่แล้ว
🖥 Код из видео: github.com/Vladddd46/binaryTreeTutorial 🖥 Поддержать канал: 5375414121740418 🍖 В этом видео я расскажу о структуре данных бинарное дерево и как реализовать бинарное дерево на языке программирования С. #бинарное_дерево #binaryTree #binary_tree #бинарное_дерево_на_си #структуры_данных #data_structures
Ключевое слово static в С/C++
มุมมอง 5783 ปีที่แล้ว
В этом видео я расскажу о ключевом слове static в языках программирования C/C Поддержать канал: 5375414121740418 🍖 Сайт про схемотехнику - cxemotexnika.org/ #static #c #programming #staticKeyword #tutorial
Интерфейс SPI
มุมมอง 3104 ปีที่แล้ว
Поддержать канал: 5375414121740418 🍖 Интерфейс SPI и протокол передачи данных по SPI Что такое SPI и каким образом передаются данные с помощью SPI. SPI широко применяется в схемах на микроконтроллерах для коммуникации с периферией. ru.wikipedia.org/wiki/Serial_Peripheral_Interface #spi #что_такое_spi #SPI #интерфейс_SPI #протокол_SPI
[DHT11] Измерение температуры и влажности с помощью датчика DHT11 без сторонних библиотек.
มุมมอง 3954 ปีที่แล้ว
Поддержать канал: 5375414121740418 🍖 github.com/Vladddd46/Hardware/tree/master/t04/main - код из видео. Работа с датчиком DHT11 без использования сторонних библиотек. Разбор протокола коммуникации с DHT11 (также DHT22). Реализация протокола коммуникации с DHT11 на языке программирования Си. www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf - dht11 datashe...
Шина I2C
มุมมอง 3644 ปีที่แล้ว
Поддержать канал: 5375414121740418 🍖 I²C (IIC), Inter-Integrated Circuit) - последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов. Использует две двунаправленные линии связи (SDA и SCL), применяется для соединения низкоскоростных периферийных компонентов с процессорами и микроконтроллерами (например, на материнских платах, во встраиваемых система...
Структуры данных: Стек. + реализация на Си
มุมมอง 6K4 ปีที่แล้ว
Поддержать канал: 5375414121740418 🍖 Что такое стек. Как реализовать стек на си. Сбалансированные скобочки (balanced parentheses). Стек (англ. stack - стопка; читается стэк) - абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in - first out, «последним пришёл - первым вышел»). Чаще всего принцип работы стека сравнивают со стопкой тарелок...
Связной Список (linked list). + реализация на Си.
มุมมอง 17K4 ปีที่แล้ว
Что такое Связной список? Как создать связной список? Как добавить элемент вперед связного списка? Как добавить элемент назад связного списка? Как вставить элемент в связной список? Как удалить элемент из связного списка? #динамические_структуры_данных #связной_список #односвязный_связной_список #linked_list #си #программирование #Индия #programming #data_structures #связные_списки
Алгоритм Флойда-Уоршелла (+ реализация на С)
มุมมอง 4.1K5 ปีที่แล้ว
Поддержать канал: 5375414121740418 🍖 Алгоритм Флойда-Уоршелла - динамический алгоритм для нахождения кратчайших расстояний между всеми вершинами взвешенного ориентированного графа. Разработан в 1962 году Робертом Флойдом и Стивеном Уоршеллом.

ความคิดเห็น

  • @StankBrewing
    @StankBrewing 14 วันที่ผ่านมา

    Спасибо! Очень информативно и полезно)

  • @BasilKepler
    @BasilKepler 14 วันที่ผ่านมา

    Просто абзац! До чего докатилась современная цирково-приходская школа. Связать три слова в осмысленную фразу - из области невероятного. Если кратко: если хочешь узнать, как просрать хорошую тему в ноль - спроси у аффтора как! Аффтар может открывать новый коач-анал, обучать школоту основам убогости мышления и как правильно доносить мысли до общественности, чтобы она хотела послать тебя на йух! Успех обеспечен!

  • @shibainu4205
    @shibainu4205 หลายเดือนก่อน

    Спасибо Вам огромное, очень понятное объяснение

  • @dampling2601
    @dampling2601 4 หลายเดือนก่อน

    У меня вопрос, а если у 2 процессов будут сокеты с одинаковыми портами. Будут ли конфликты с другими программами на пк, которые используют этот же порт

    • @depdoprogramming2750
      @depdoprogramming2750 4 หลายเดือนก่อน

      ты не сможешь создать второй сокет с портом, который уже используется. При создании сокета выдаст ошибку: Address already in use

  • @Pchelik-84947
    @Pchelik-84947 4 หลายเดือนก่อน

    Чел, большое тебе спасибо, видос очень годный. Я удивлён что у тебя такой маленький канал, объясняешь материал в видео очень понятно и быстро

  • @МойшеЮхман
    @МойшеЮхман 5 หลายเดือนก่อน

    А через интернет ?

    • @depdoprogramming2750
      @depdoprogramming2750 5 หลายเดือนก่อน

      @@МойшеЮхман что ?

    • @МойшеЮхман
      @МойшеЮхман 5 หลายเดือนก่อน

      @@depdoprogramming2750 =)) Прости, не увидел, что половину комментария стёр. Я имел ввиду, есть ли гайд как написать клиент-сервер для передачи сообщений (типа "чат") через интернет \ локальную сеть между двумя компами?

    • @МойшеЮхман
      @МойшеЮхман 5 หลายเดือนก่อน

      @@depdoprogramming2750 ну или хотя-бы чрез тунгл.

    • @depdoprogramming2750
      @depdoprogramming2750 5 หลายเดือนก่อน

      ​@@МойшеЮхман нужно настроить порт форвардинг на роутере. Глобальный интернет не видит твой комьютер, так как он находится в локальной сети. Вся коммуникация c шлобальной сетью идет через роутер, который распределяет трафик по локальной сети. Соответсвенно нужно зайти в настройки роутера (обычно перейти по адрессу 192.168.0.1) и там указать, что весь трафик с порта X нужно направлять на компьютер с адрессом Y и портом Z в локальной сети. PS. +нужно чтобы клиент подключался к айпи роутера, тобишь айпи, который видно в глобальной сети. обычно этот айпи динамический - провайдер выдает каждый раз новый айпи. Можно попросить у провайдера статический айпи, но обычно за это нужно доплачивать

    • @МойшеЮхман
      @МойшеЮхман 5 หลายเดือนก่อน

      @@depdoprogramming2750 спасибо!

  • @ЮрийКолесник-ь9ъ
    @ЮрийКолесник-ь9ъ 6 หลายเดือนก่อน

    Спасибо! Всё было интересно почему датчик не повесить на инпут порт, вроде при первом взгляде красиво и порты более "матёрые" остаются свободными. Как-то тема ни где, где описывалось как подкидывать датчик - эта не раскрывалась. Теперь понятно, что датчик надо "пнуть", до этого думал что он просто прёт данные без остановки.

  • @iraunikel
    @iraunikel 7 หลายเดือนก่อน

    Спасибо!

  • @igorseledtsov7345
    @igorseledtsov7345 7 หลายเดือนก่อน

    ну не пишут так на Си. это какойто Си++ стиль. для Си++ код ну более мене норм. Но на Си... За такое сразу увольнение с волчьим билетом.

    • @depdoprogramming2750
      @depdoprogramming2750 7 หลายเดือนก่อน

      та не страшно, на сво берут и с волчьими билетами и с петушиными. без работы не останусь😌

    • @igorseledtsov7345
      @igorseledtsov7345 7 หลายเดือนก่อน

      @@depdoprogramming2750 Да не не надо так мрасно Си++ сейчас в поочёте.. Деньги будете грести лопатой

  • @qotpiq1623
    @qotpiq1623 8 หลายเดือนก่อน

    На видео это выглядит так легко. Большое спасибо <3

  • @TsvetaevAlex
    @TsvetaevAlex 8 หลายเดือนก่อน

    Почему 127...., можно использовать localhost?

    • @depdoprogramming2750
      @depdoprogramming2750 8 หลายเดือนก่อน

      это одно и то же. localhost=127.0.0.1 en.wikipedia.org/wiki/Localhost: "This resolution is normally configured by the following lines in the operating system's hosts file: 127.0.0.1 localhost"

  • @TsvetaevAlex
    @TsvetaevAlex 8 หลายเดือนก่อน

    3:56 нарисованы 2 сокета на 1 порту, будет ошибка сокета, port busy. Можно поставить порты 5000 и 8000 или 5000 и 5001. На один порт 2 вешать нельщя

    • @depdoprogramming2750
      @depdoprogramming2750 8 หลายเดือนก่อน

      да, я ошибся. нужно 2 разных порта. спасибо

    • @depdoprogramming2750
      @depdoprogramming2750 8 หลายเดือนก่อน

      а хотя нет. Если рассматривать это в контексте передачи данных, то как раз таки 1 порт используется. В серверной программе создается сокет с портом и айпи, а на клиентской просто указывается сокет к которому мы хотим присоидениться. Тобишь при обмене данными между двумя программами будет задействован 1 порт. Возможно я плохо показал это в видео

  • @Efhjmnrfhh1
    @Efhjmnrfhh1 9 หลายเดือนก่อน

    Спасибо! Помогло

  • @p11-289
    @p11-289 9 หลายเดือนก่อน

    Большое спасибо, видео очень помогло

  • @DmitryDeim
    @DmitryDeim 10 หลายเดือนก่อน

    Спасибо

  • @MrLeyt1125
    @MrLeyt1125 10 หลายเดือนก่อน

    Такой вопрос, а зачем в функцию push_back передавать указатель на указатель **list, если можно передать просто *list , в чем выгода? И то и то 4 байта занимает. Если можно максимально просто, я тупой

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

      в случае push_back действительно выгод немного: есть 1 случай когда это оправдано => когда у нас пустой список *list = Null. Тобишь когда нам нужно создать связной список. Но если мы уверены что в пушбек всегда будет прилетать непустой список, то можно брать по указателю *list

    • @MrLeyt1125
      @MrLeyt1125 10 หลายเดือนก่อน

      @@depdoprogramming2750 А можно в void функции push_back , которая у меня принимает *list, присвоить указателю list новый адрес? Если я пишу list = new_element; то он в push_back меняется нормально, а в мейне остается старым. Или обязательно делать возвращаемой функцию t_list* push_back() ?

  • @vladimirlrt2599
    @vladimirlrt2599 10 หลายเดือนก่อน

    А как защитить (зашифровать) соединение от перехвата и подмены данных между клиентом и сервером

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

      шифрование это тема отдельного видео, но если на практике, то можно использовать готовые библиотеки. Например в python можно использовать библиотеку ssl

  • @MrLeyt1125
    @MrLeyt1125 10 หลายเดือนก่อน

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

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

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

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

      Соответсвенно вставка элемента в произвольное место в списке будет эффективней чем в массиве. В списке будет просто переорределение указателей List *tmp = ptr.next ptr.next = newNode newNode.next = tmp

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

      В свою очередь в массиве нужно будет сместить все элементы справа от выбранного индекса вставки вправо и потом уже вставить элемент по индексу

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

      Также если выделенная память под массив закончиться, то нужно перевыделять новую память большего размера и переносить в нее массив. В списках каждая нода выделяется отдельно

    • @depdoprogramming2750
      @depdoprogramming2750 10 หลายเดือนก่อน

      В то же время добавление элементов в конец массива будет быстрее так как это *arr+index (адреса первого элемента массива в памяти + индекс по которому хотим поставить элемент ) В случае со списком нужно выделять новый участок памяти под ноду, что довольно затратно

  • @MisterM-q8h
    @MisterM-q8h ปีที่แล้ว

    Дуже корисне відео🤩 Лайк і підписка💯

  • @estrella7696
    @estrella7696 ปีที่แล้ว

    Спасибо большое!

  • @mariavladlife4429
    @mariavladlife4429 ปีที่แล้ว

    спасибо! очень понятно

  • @SerjCrimea
    @SerjCrimea ปีที่แล้ว

    Это прикольно. Но я пока не вижу идеи, данных, при которой нужно такое хранение данных :) Ибо в основном есть данные, которые нужно хранить не меняя последовательность. Или это высшая математика? И ..... даже варианта нет для чего бинарное дерево?

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      Например в с++ контейнер std::map реализован с помощью бинарного дерева. + бинарного дерева в том, что скорость поиска элемента в нем O(logN), что достаточно быстро. Если элементы хранить в обычном списке, то скорость поиска элементов там - O(n). Короче, бинарное дерево еффективно для поиска элементов в нем.

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      Ситуация в которой используется бинарное дерево: когда ты добавляешь элементы нечасто, но обращаешся к элементам бинарного дерева часто. Например ты создал какую-то условную базу даных в динамиеской памяти и потом постоянно обращаешся к ее элементам. В таком случае бинарное дерево будет эффективным. куда более еффективным чем обычный список

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

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

    • @SerjCrimea
      @SerjCrimea ปีที่แล้ว

      @@depdoprogramming2750 В примере с цифрами до меня это не донеслось ;) Таким образом данные делятся для поиска, хотя бы пополам. Хотя я до конца еще не понял схему ;) но интересно.

  • @МаксПереу
    @МаксПереу ปีที่แล้ว

    Товарищи коллеги, пожалуйста требуется совет или подсказка. Хочу сделать десктоп приложение(принципиально) предполагается серверная часть, сервер делать грубо говоря как показано в видео просто по tcp протоколу? А то друг с потока (я учусь в универе) сказал что нужно еще http протокол т. К. он на прикладном уровне, а tcp на транспортном. Изначально хотел сделать tcp сервер с обменом данными с клиентом без http, а теперь думаю такое возможно и так делают ли вообще. Проект я делаю для диплома

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      Протокол это просто оговоренный формат передачи сообщений

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      Http можно не реализовывать.

  • @ХанХалатян
    @ХанХалатян ปีที่แล้ว

    Прикол с индусом 10/10

  • @McGewen
    @McGewen ปีที่แล้ว

    а сам написати не міг*? шо копіюеєш в інших? програміст мамкин

  • @GROSSMANN_PARTNER
    @GROSSMANN_PARTNER ปีที่แล้ว

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

  • @baron2272
    @baron2272 ปีที่แล้ว

    Расскажите, как сделать обмен данными через Apache и MySQL

  • @teamssquadts7833
    @teamssquadts7833 ปีที่แล้ว

    Не смотрите, 25 минут впустую.(ну ладно, поржал)

  • @andreyzykov1059
    @andreyzykov1059 ปีที่แล้ว

    это видео с индийского канала перевели? ахаха

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      @andreyzykov1059 вдохновлялись стилем

  • @sin_ner1492
    @sin_ner1492 ปีที่แล้ว

    Кто нибудь считал, сколько раз он сказал слово сокет?

  • @cheremushk
    @cheremushk ปีที่แล้ว

    Дядь, всегда ли клиент должен закрывать подключение к серверу, после отправки и приёма сообщения от сервера? Что, если это чат?

    • @evan_kirk
      @evan_kirk ปีที่แล้ว

      Насколько я знаю, сокет на то и сокет, что позволяет сделать беспрерывное подключение.

    • @depdoprogramming2750
      @depdoprogramming2750 11 หลายเดือนก่อน

      @@evan_kirk да, сокет можно держать открытым и слать туда данные постоянно. Но надо учитывать что у ОС есть ограничения на количество открытых сокетов, поэтому нельзя иметь миллион открытых сокетов одновременно. есть еще системный вызов select, который может отслеживать активность на сокете. Тоесть если на сокет будут приходить какие то данные, то селект будут нотифицировать об этом

    • @evan_kirk
      @evan_kirk 11 หลายเดือนก่อน

      @@depdoprogramming2750 спасибо)

  • @erDsJEb36sgsx
    @erDsJEb36sgsx ปีที่แล้ว

    Охренеть как четко ты смог объяснить блин да даже я понял СПАСИБО ЧУВАК

  • @erDsJEb36sgsx
    @erDsJEb36sgsx ปีที่แล้ว

    заебись каминчик я кайфанул

  • @каникудылето
    @каникудылето ปีที่แล้ว

    все отлично без води без лишнего

  • @R4isiN77
    @R4isiN77 ปีที่แล้ว

    А можно исходник программы в видео?

  • @Kamingos
    @Kamingos ปีที่แล้ว

    классное видео

  • @dacyn8417
    @dacyn8417 ปีที่แล้ว

    Я написал ip сервара в клиенте и в сервер, запускаю пишу, и он просто закрывается.

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      Скорее всего что то неправильно сделали

    • @dacyn8417
      @dacyn8417 ปีที่แล้ว

      ​@@depdoprogramming2750 говорит то что сервер (компьютер) отклонил подключение

    • @depdoprogramming2750
      @depdoprogramming2750 ปีที่แล้ว

      @@dacyn8417 ну это нужно смотреть. Попробуйте взять код по ссылке в описании видео

    • @dacyn8417
      @dacyn8417 ปีที่แล้ว

      @@depdoprogramming2750 хорошо, спасибо

    • @slavik15971597
      @slavik15971597 ปีที่แล้ว

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

  • @Джорноджованна-у4ш
    @Джорноджованна-у4ш ปีที่แล้ว

    а как сделать русский язык?

  • @ИмяФам-г2о
    @ИмяФам-г2о 2 ปีที่แล้ว

    Чётко. Без лишнего )

  • @mi6ka883
    @mi6ka883 2 ปีที่แล้ว

    для скачивания в самом лучшем качестве , вместо метода youtube.streams.first() можно использовать метод youtube.streams.get_highest_resolution() И спасибо вам за видео

  • @Владимир-ю3у4и
    @Владимир-ю3у4и 2 ปีที่แล้ว

    Парень , моё почтенье!

  • @gdeshe4
    @gdeshe4 2 ปีที่แล้ว

    бинарное дерево поиска !

  • @АндрейАлександрович-ы6я
    @АндрейАлександрович-ы6я 2 ปีที่แล้ว

    Большое спасибо! А можно видео с созданием дочернего процесса и созданием соединения в нем? Оно вроде все просто, но не просто

    • @depdoprogramming2750
      @depdoprogramming2750 2 ปีที่แล้ว

      не думаю что в ближайшее время

  • @ВиталийПо-ю2д
    @ВиталийПо-ю2д 2 ปีที่แล้ว

    если от идеи начать то откуда у меня Python на компе? полный провал на первой команде сразу.

  • @helloworld-fv8kx
    @helloworld-fv8kx 2 ปีที่แล้ว

    а как сделать сервер на удаленном компьютере(например на aws) а клиент на своем компьютере?

    • @depdoprogramming2750
      @depdoprogramming2750 2 ปีที่แล้ว

      я с aws работал только 1 раз, но на сколько я помню они просто предоставляют удаленный компьютер если коротко. точно также, как я показал в конце видео. я там запускаю сервер на одном компьютере, а клиент на другом. Я использую локальный ip-адресс компьютера, но у компьютера есть еще и глобальный айпи адресс(он кстати может быть динамическим(меняется каждый раз при подключении) либо статическим(закреплен за вами интернет провайдером. обычно за такое нужно доплачивать)). Так вот сделать нужно все также, только вместо локального айпи использовать глобальный. Нужно узнать глобальный айпи адресс удаленного компьютера - запустить сервер с этим айпи адрессом и потом поключаться с к этому айпи адрессу с клиента

    • @helloworld-fv8kx
      @helloworld-fv8kx 2 ปีที่แล้ว

      @@depdoprogramming2750 ок, нужно будет попробовать

    • @helloworld-fv8kx
      @helloworld-fv8kx 2 ปีที่แล้ว

      ​@@depdoprogramming2750 получилось!!! все работает. Бооожеее, 4 дня у меня на это ушло, чтобы понять как это все работает. Сделал я на aws, добавил http в secure groupe ,открыл порт, запустил сервер с++, запустил клиент на своей машине и все заработало !!!! юхууу

  • @ДенисЧеб-м6ф
    @ДенисЧеб-м6ф 2 ปีที่แล้ว

    немного не понимаю, почему когда вы вызываете функцию push, вы передаете указатель на указатель (**), а когда обходите дерево в ширину передаете просто указатель(* )?

    • @depdoprogramming2750
      @depdoprogramming2750 2 ปีที่แล้ว

      Когда мы передаем в функцию аргумент, значение этого аргумента копируется. Тобишь в функцию передается не оригинальный аргумент, а его копия: void incrementA(int a) {a++;} => функция incrementA будет инкрементировать переменную а локально: int a = 1; incrementA(a); print(a) => а по прежнему = 1 Поэтому для того, чтобы изменять значение переменной а вне функции incrementA, в функцию incrementA нужно передавать указатель на a: incrementA(int *a) {*a += 1}. В таком случае: int a = 1; incrementA(&a); print(a); => теперь a=2 ----- Из этого следует: Когда мы передаем в функцию указатель - берется не его оригинальное значение, а его копия. Тобишь: int a = 1; int ptrA = &a; => пускай ptrA имеет условный адресс 0x01 incrementA(&ptrA); => сюда передается копия указателя ptrA. тобишь у указателя в функции incrementA будет уже другой адресc (например 0x01). Несмотря на это и ptrA(0x01) и его копия (0x02) будут указывать на один и тот же обьект в памяти: int ptrA = &a; print(a); // выдаст какой то адресс (например 0x01) void incrementA(int &a) { print(a); // тут уже будет другой адресс (например 0x02) } Несмотря на это и ptrA(0х01) и его копия(0х02) будут указывать на один и тот же адресс в памяти(например 0х03) Вообщем нужно понимать разницу между адрессом самого указателя и адрессом на который указывает укащатель. ----- А теперь: 1. в функции push(BinaryTree **node) нам нужно изменить адресс(именно адресс на который указывает tree, а не значение) внешнего указателя, а не его копии, которая передается в функцию push. Если мы передадим просто указатель BinaryTree *tree = тут_созданное_дерево; // пускай у адресс tree = 0x01, который указывает на обьект Node с адрессом 0х100 push(tree) { // push(BinaryTree *node) print(node) // в переменную node передалась копия указателя tree(0x01) и теперь у этой копии другой адресс (0х02) node = Node с адрессом 0x101 // таким образом мы говорим, указатель node(0x02) = Node(0x101) // Однако node(0x02) это всего лишь копия. Оригинальный указатель tree(0x01) не изменится в таком случае и будет по прежнему указывать на Node(0x100) } // !!!!! нам нужно изменить сам адресс, на который указывает tree, а не значение по адрессу tree. Именно поэтому **tree 2. В функциях обхода дерева нам не нужно изменять значения, которые хранит указатель, поэтому можно обойтись просто копией.

    • @ДенисЧеб-м6ф
      @ДенисЧеб-м6ф 2 ปีที่แล้ว

      @@depdoprogramming2750 Спасибо Вам за ответ! Теперь все понятно

  • @nazarsincopa880
    @nazarsincopa880 2 ปีที่แล้ว

    Ты мэтр!