Указатель на функцию в качестве параметра. Передача функции в качестве параметра. С++ Урок #65

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2024

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

  • @CoolbitsVDA
    @CoolbitsVDA Год назад +36

    Стадии просмотра данного видео:
    0:00 Интересно что там у нас сегодня?
    1:58 Опять указатели. Кто-то на кого-то указывает, в голове каша.
    9:23 Вроде все понятно. Только зачем мне указатель на функцию, если я могу вызвать функцию напрямую?
    18:58 Это ахрененно!!!! В очередной раз, спасибо огромное, Сергей!

  • @wlepnoga
    @wlepnoga 7 лет назад +378

    Самый внятный канал о С++!

  • @satyrosa
    @satyrosa Год назад +74

    Готовлюсь к собеседованию. Впервые слышу об этом. 4 года в универе. 2 самостоятельных проектов. И такое не в первый раз, спасибо!!

    • @francheeze
      @francheeze Год назад +1

      И как?

    • @satyrosa
      @satyrosa Год назад +6

      @@francheeze неудачно, но подозреваю, что это просто неуверенность. Плюс ещё с математикой налажала

    • @francheeze
      @francheeze Год назад +4

      @@satyrosa Это печально

    • @pavel_losev
      @pavel_losev Год назад +1

      ​@@francheezeа что было в самостоятельных проектах не секрет?

    • @francheeze
      @francheeze Год назад

      @@pavel_losev ?

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 года назад +58

    Data from Astral - повеселило )))) Спасибо за уроки!

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

      Математическое описание состояния энергетики

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

      что такое astral

    • @MirrorOfLourence
      @MirrorOfLourence 2 года назад +3

      @@setwindowlongptr Астрал и есть. Т.е., полагаю, данные, взятые с потолка)

  • @almosteasys-r3n
    @almosteasys-r3n 9 месяцев назад +2

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

  • @bama2619
    @bama2619 3 года назад +21

    Удобный инструмент! Спасибо. И почему я раньше не смотрел ваш канал? Как заработаю копеечку обязательно закину донат! Народный учитель должен жить хорошо. Большая помощь обществу.

  • @Dmitrii82
    @Dmitrii82 4 года назад +5

    Весь интернет перелопатил нихрена не понял, только вы можете объяснить доходчиво. Громадное спасибо

  • @yaroslavvdovenko3482
    @yaroslavvdovenko3482 6 лет назад +134

    Еще не встречал настолько крутых обучалок😊😊

  • @ДмитрийЕвтушенко-к3т

    сначала послышалось калек а не КОЛЛЕГ но по смыслу подходить)))

  • @Ermine882
    @Ermine882 7 лет назад +21

    Как всегда спасибо за урок и оперативность.

  • @amd3s
    @amd3s 7 лет назад +29

    Хм, реально крутая фишка!
    Спасибо.

  • @Jessica_Cat-l1v
    @Jessica_Cat-l1v 9 месяцев назад

    Смотрю и радуюсь! Предельно ясно и понятно, в самый раз для чайника))))

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

    Круть, 3 месяца изучаю C++ и впервые узнал об указателе на функцию.

    • @nerts4720
      @nerts4720 10 дней назад

      тоже самое, а у вас видимо уже 6 лет опыта на данный момент😅

  • @zumaxrussia
    @zumaxrussia 6 лет назад +5

    Спасибо Сергей. Добротное видео. Как в прочем всегда.

  • @ДмитрийКулявец-в5у
    @ДмитрийКулявец-в5у 5 лет назад +16

    Концовочка урока порадовала - данные из астрала))) Но зато всё прекрасно понятно) Спасибо за уроки!

  • @antandgen
    @antandgen 6 лет назад +47

    Сергей, добрый день! Во первых хочу поблагодарить Вас за ваш ТРУД, реально очень помогает в освоении С++. У меня огромная просьба. Просьба такая, подскажите как параллельно с изучением С++, еще практически закреплять пройденный материал. Пример: Ваши уроки это ТЕОРИЯ и бывает так, что для полного понимания хочется ПРАКТИКИ, но в силу не большого багажа знаний сложно практиковаться, но практиковаться НАДО. Есть три урока как создать игру "Змея" на основе С++, очень помогло понять до конца как работают функции, ОЧЕНЬ ПОМОГЛИ ВАШИ УРОКИ,может у Вас есть практические уроки для полного понимания. Спасибо.

    • @dmax8622
      @dmax8622 6 лет назад +42

      Вопрос конечно не мне , но отвечу, так как меня это тоже интересовало. Есть две отличные книги : "Сборник задач по программированию" Д.М.Златопольский и "Сборник задач в примерах" Н.Культин. Д.М. Златопольский хорош тем что, все его задачи, в каждом разделе, начинаются с элементарно легких, и ПОСТЕПЕННО усложняются до максимум сложности. А вот Н.Культина, ко всем задачам, в разделах, есть решения. Ну вот как-то так.
      PS.
      Лично мне больше нравится "Сборник задач по программированию" Д.М.Златопольского, мне он ОЧЕНЬ ПОМОГ в изучении С++.

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

      @@dmax8622 Заодно можно подучить и то, что в школе было успешно прогуляно или забыто))

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

      Andrey A На канале есть домашние задания по с++

    • @ДониёрРахманов-ч1ю
      @ДониёрРахманов-ч1ю 4 года назад +1

      @@dmax8622 Спасибо большое,то что надо!

    • @ДанилЛевковский-ц8г
      @ДанилЛевковский-ц8г Год назад +1

      @@dmax8622 Спасибо

  • @archiechellaut9483
    @archiechellaut9483 3 года назад +3

    Большое спасибо вам за урок и прекрасное пояснение, Сергей!

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

    Автора и по голосу приятно слушать и розжевывает все до мелочей, спасибо!

  • @timurortskhanov8527
    @timurortskhanov8527 6 лет назад +8

    Наиогромнейшее СПАСИБО. Вы СУПЕР.

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

    Вы первый человек, которому удалось объяснить мне пользу указателей

  • @АртурНестерук-ж2й
    @АртурНестерук-ж2й 4 года назад +1

    Я Вас благодарю за Вашу работу, очень хорошо всё объясняете!

  • @itstudio3107
    @itstudio3107 3 года назад +6

    Спасибо за наглядный пример. Хотя, мне кажется, стоило пример отрисовать в пэинте - так нагляднее. Я прям чувствую, что понял смысл лишь на половину. Но в любом случае огромное спасибо и за пример, и за урок!

  • @chausovanton
    @chausovanton 4 года назад +12

    Во первых, Огромный респект за канал!
    Такой вопрос: Зачем использовать указатель на функцию, если примерно такого же эффекта можно добиться вот так:
    string DataFromBD()
    {
    return "Data From BD";
    }
    void ShowInfo(string str)
    {
    cout

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 года назад +13

      указатели позволяют экономить память.

    • @sense5879
      @sense5879 3 месяца назад

      @@ДмитрийНормов-ю6ц и сколько ты такими методами памяти сэкономишь? Проще уже изначально всё по уму писать и обращать внимание на действительно важные вещи, чем вот так вот синтаксис усложнять. Куева туча скобок и всё слеплено вместе, бред, а ты представь если весь проект такой?

  • @staspineapple6962
    @staspineapple6962 4 года назад +6

    Весьма доволен собой был до поры до времени:D

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

    Огромное спасибо! Очень наглядно и без воды.

  • @ДмитрийБузницкий-б3н

    Спасибо, Сергей. Как всегда познавательно

  • @Firuz26
    @Firuz26 7 лет назад +19

    Спасибо

  • @SeshAlex
    @SeshAlex 6 лет назад +7

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

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

    Классная штука , нужно по практиковаться.

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

    И как я мог пропустить такой важный урок?? Спасибо вам большое!

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

    Спасибо вам большое за урок

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

    Топ объяснение делегатов. Нисмотря на то что данные берутся из астрала)

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

    Спасибо! Помогаете!!!

  • @АртёмЯрошенко-и3е
    @АртёмЯрошенко-и3е 5 лет назад +2

    Очень просто и понятно. Спасибо вам!)

  • @АлексФерНорте
    @АлексФерНорте 5 лет назад +2

    Спасибо тебе за твой труд, дружище!

  • @SimpleCodeIT
    @SimpleCodeIT  7 лет назад +12

    #указательнафункцию #SimpleCode #урокипрограммирования

    • @ЧеловекРавнодушный
      @ЧеловекРавнодушный 5 лет назад

      Тут можно и без указателя обойтись. В функцию ShowInfo можно тупо передать функцию...

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

      @@ЧеловекРавнодушный Я тоже так попробовал, получилось и тогда вопрос, в чем различие указателя на функцию и без указателя передача функции?

    • @ЧеловекРавнодушный
      @ЧеловекРавнодушный 5 лет назад

      Андрей Шолмин, у меня такой же вопрос. Тут либо накосячил автор ролика, либо есть некая принципиальная разница, которую мы поймём в будущем. Я снова пока забросил Си++... Я к нему периодически возвращаюсь... Но если вы раньше меня поймёте, оставьте комментарий прямо здесь... Сохраните ссылку на видео для этого, да и на комментарий тоже...

    • @vovadenys4149
      @vovadenys4149 5 лет назад +6

      ​@@andreysholmin5863 передавая функцию компилятор не лично ее передает а создает ее копию и тогда у вас 1 функция занимает в 2 раза больше памяти (функция и копия). А передавая по указателю вы как бы на прямую работаете с функцией. Вроде как то так) поправте если чо

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

      @@ЧеловекРавнодушный передавая функцию компилятор не лично ее передает а создает ее копию и тогда у вас 1 функция занимает в 2 раза больше памяти (функция и копия). А передавая по указателю вы как бы на прямую работаете с функцией. Вроде как то так

  • @NoRussiaNoCry
    @NoRussiaNoCry Год назад +13

    Як нечакана і прыемна было даведацца, што аўтар гэтага выдатнага каналу з роднай Украіны...
    Дзякуй вялікі за працу і трымайцеся, сябры!

    • @ДанилЛевковский-ц8г
      @ДанилЛевковский-ц8г Год назад +3

      Частенько встречаю талантливых прогеров из Украины. Не так давно один мой друг, переехал в Канаду и теперь работает там. Видимо тоже не плохой специалист.

    • @АлексейДоровской-х2ъ
      @АлексейДоровской-х2ъ Год назад +1

      Интересный у тебя ник). Раз ты так переживаешь за свою родину, то че на фронте-то не защищаешь ее? Или у тебя "активная" политическая позиция только в интернете? Хотя может тебя уже мобилизовали и ты сейчас лежишь-гниешь в поле где-нибудь под Артемовском...

    • @illiahimself
      @illiahimself 9 месяцев назад +1

      @@АлексейДоровской-х2ъ ты еблан? это беларуская мова

  • @arzamas1988
    @arzamas1988 9 месяцев назад

    Я постоянно юзаю указатеди на функци в машине состояний. Есть энамы, описывающие события и текущее состояние. Есть двойной массив, который содержит указатели на функции. Комбинацией значений событие и текущее_состоянте формируется индекс (x и y) и выбирается нужная функция. Коряво объяснил. Но инструмент очень удобный.

  • @VideobufferGoPro12-kn2ok
    @VideobufferGoPro12-kn2ok 6 месяцев назад

    Даже коммент напишу, очень качественно объяснено👍👍👍

  • @kadyshev2759
    @kadyshev2759 5 лет назад +6

    9:55 Трудно представить
    *Спасибо за урок*

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

    Я понял это так. Есть несколько функций. Чтобы вызвать одну нам необходимо создать функцию, параметром которой является указатель на функцию.
    void ShowFun(string(*pFoo)()) // функция, параметром которой является указатель на функцию
    {
    cout

  • @learning4702
    @learning4702 Год назад

    Спасибо за видео, узнал для себя новую возможность С++)

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

    спасибо Сергей!

  • @BortMechanick
    @BortMechanick 6 лет назад +13

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

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

      Пожалуйста! =)

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

      @@SimpleCodeIT Спасибо за урок,с помощью вас я наконец-то смог программировать на С++. Пересматриваю ваши ролики.

    • @ВладиславМаксимов-р5х
      @ВладиславМаксимов-р5х 2 года назад

      @@hackerman5984 Работаете программистом?

  • @sixaxisization
    @sixaxisization 2 года назад +2

    Так они все возвращают string....в качестве аргумента суем string и все... Нет? showInfo(string str){cout

  • @Viktor_Kardakov
    @Viktor_Kardakov Год назад

    Со второго раза понял о чём речь, спасибо!

    • @Empty_line
      @Empty_line Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

  • @АлександрЛитвинюк-х2ы

    Спасибо за знания !

  • @shahriyorturayev311
    @shahriyorturayev311 Год назад

    eng zo`r kanal sizga rahmat

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

    Очень важная тема!

  • @ИвановАндрей-ш5м
    @ИвановАндрей-ш5м 6 лет назад +2

    Очень крутой урок, спасибо большое!

  • @aleksandrdrobyshev7623
    @aleksandrdrobyshev7623 4 года назад +125

    Старина, ты неправильный программист, значешь почему? Потому, что правильные програмисты не умеют объяснять :) Они всегда все объяснят так, буд-то тот, кому объясняют- уже и так все сам знает, как-бы как профессору экзамен сдают. В результате нихрена не понятно.
    Ты круто объясняешь, особенно когда с пэйнтом, не забывай про него.
    По поводу урока, я тебе верю, что это очень важно, и полезно, но нихрена не понял. :LOL:
    Т.е. какие-то наметки в голове есть, как работает вроде понятно, но зачем...
    Может кто попробует мне пример привести использования. Только не приводите пример в стиле "представь, что ты пишешь софт для СпейсШаттла".. ребят, если это уроки для чайника- чайник даже представить себе не сможет, что такое код для какого-то межгалактического монстра.
    П.С. побольше домашки, она заставляет думать. Даже простая, она заствляет самому проделать показанное на уроке.

    • @abdussattarkassymbekov3643
      @abdussattarkassymbekov3643 4 года назад +62

      Ну как-то раз, я делал так скажем свой "пейнт", только писал его не на С++, а JS, там тоже есть что-то похожее на эти указатели на функцию. Ближе к делу, нужно было чтобы когда пользователь нажимал на кнопку с прямоугольником, то он мог рисовать прямоугольник, а когда нажимал на кнопку с кругом, то рисовал круг. Реализация была такова: должна быть ОДНА функция (назовем ее draw), которая вызывается когда пользователь нажал на мышку и эта функция позволяет пользователю рисовать все фигуры которые ему доступны, но пока не совсем понятно как эта функция определяет что ей рисовать, а на самом деле это не совсем функция, это указатель на функцию, который меняется в зависимости от того на что нажал пользователь. То есть у нас есть указатель на функцию который называется draw, и он меняется от того на что мы нажали, допустим мы нажали на кнопку прямоугольника, и теперь draw указывает на функцию drawRect, которая специально написана чтобы рисовать прямоугольник, если нажали на круг, то draw указывает на drawCirclе, которая написана чтобы рисовать круг. В итоге выходит что мы вызываем один и тот же указатель на функцию, а он в свою очередь указывает на разные функции, которые могут делать абсолютно любые вещи. Мы просто обращаемся к этому указателю когда кто-то начал рисовать, и меняем функцию на которую он указывает когда, например с прямоугольника на круг или на просто линию. И еще нам в будущем может взбредить в голову дать возможность рисовать еще больше фигур, ну допустим треугольник, ради этого мы можем просто функцию drawTriangle написать, и потом добавить кнопку рисования треугольника, когда нажимаем на эту кнопку просто говорим что теперь draw указывает на drawTriangle. Не уверен что смог донести, если все еще слабо себе представляете, то я бы рекомендовал написать свой пейнт на JS тоже, это не так сложно как кажется, я написал это с 5-6 месячным опытом в JS.

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

      Если коротко. Для чего нужна ф-ция? Чтобы в зависимости от переданных в неё параметров, получить определённый результат. Допустим ф-ция сложения. А теперь представь, что в эту ф-цию сложения ты передаёшь результаты полученные из других ф-ций. Неважно каких. Тебе главное сложить их результаты.

    • @МаксимШлык-б8т
      @МаксимШлык-б8т 3 года назад +2

      @@abdussattarkassymbekov3643 И зачем это надо Вы поясните? всё равно есть функции код которых рисует треугольник или квадрат или иное так почему же нельзя просто в зависимости от того на что нажали вызвать соответствующую функцию?

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

      @@МаксимШлык-б8т в случае если мы не будем использовать указателей на функцию, то я самым простым способом вижу так сделать. Когда я нажимаю на кнопку "рисовать треугольник" я меняю значение глобальной переменной на 1 (чтобы понять что сейчас надо рисовать) потом когда пользователь хочет рисовать что-то, то я просто проверяю значение этой глобальной переменной и в зависимости от этого рисую что-то. То есть тут используется if else конструкция, а писать много if else это не очень приятно как и читать лес из if else. Чтобы избавится от них можно использовать указателей на функцию, как мне кажется это более правильное решение и более понятное. Наверное чтобы хорошо понять это стоит поделать задачи на переопределение методов класса в ООП.

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

      @@viktort9326 как вариант чтобы не дублировать код, возьмем функцию сложение векторов, можно написать только один раз эту функцию потом использовать по многу раз, даже тот же самый вывод на консоль это функция, если бы не было его то пришлось всю логику вывода на консоль писать каждый раз когда потребуется

  • @Blade_Ruiner
    @Blade_Ruiner 3 года назад +2

    Код становиться чище, но все равно необходимо написать так же условие передачи функции. =) Но так код хоть оптимизирован

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

    DataFromAstral это сильно :)))
    Мой универсальный препод по программированию все время называл тестовые переменные doloto1, doloto2... :)

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

      string GetDataFromAstral(double mercuryPosition) {
      return DoMagic(mercuryPosition)
      }

  • @АртурГребешков-к6ж
    @АртурГребешков-к6ж 6 лет назад +3

    Спасибо!

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

    Большое вам спасибо!)

  • @ЕвгенийВасильев-и3п
    @ЕвгенийВасильев-и3п 4 года назад +2

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

    • @ЕвгенийВасильев-и3п
      @ЕвгенийВасильев-и3п 4 года назад

      Линейный список. (как открыть ларёк): ...через 2 дня пришел. Сказали, я слишком худой - надо пойти поесть, чтобы 2 дня не есть, чтоб потом сдать кровь, чтоб жизнь страховать, чтоб прийти в банк, чтоб прийти в ЗАГС, чтоб пойти в ЖЭК, чтобы пойти в УВД, чтоб пойти в МОСГОСТРАНС, чтоб пойти в УПРАВУ, чтоб пойти в БТИ, чтоб пойти в ФНС, чтобы открыть ларёк...

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

      забавная ситуация)

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

    Очень понятно все объяснил, спасибо

  • @ДавидМархевка-л5й
    @ДавидМархевка-л5й 10 месяцев назад

    крутая вещь, спасибо.

  • @РусланКарнеенко
    @РусланКарнеенко 5 месяцев назад

    Cпасибо

  • @ДанилЛевковский-ц8г

    Ожидал, что пример будет по функции rand(); Мне кажется она реализована по тому же принципу и ссылается видимо на srand(); учитывая что вторая расширяет функционал первой.

  • @МарияАксенова-о9к
    @МарияАксенова-о9к 2 года назад

    лучший, огромное спасибо

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

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

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

    Для закрепления материала
    Массивы указателей на функции. Обычные и динамические.
    Чтобы усложнить задачку функция, передаваемая в виде аргумента в другую функцию, так же принимает параметр.
    В конечном итоге передача указателя на функцию в качестве параметра другой функции в цикле из массива таких указателей :)
    Внизу есть пара вопросов, буду признателен, если получу на них ответ.
    #include
    #include
    using namespace std;
    // функции, которые я буду использовать в качестве примера
    string GetDataFromDB(string DBName)
    {
    return "Data From DB: " + DBName + "
    -----------
    " + "Record1
    Record2
    Record3
    ...
    ...
    ...
    RecordsN

    ";
    }
    string GetDataFromWebServer(string ServerName)
    {
    return "Data From WEB-Server: " + ServerName + "
    -----------
    " + "WEB1
    WEB2
    WEB3
    ...
    ...
    ...
    WEBN

    ";
    }
    string GetDataFromUser(string UserName)
    {
    return "Data From User: " + UserName + "
    -----------
    " + "UserData1
    UserData2
    UserData3
    ...
    ...
    ...
    UserDataN

    ";
    }
    string GetDataFromSkype(string NickName)
    {
    return "Data From User: " + NickName + "
    -----------
    " + "SkypeData1
    SkypeData2
    SkypeData3
    ...
    ...
    ...
    SkypeDataN

    ";
    }
    // объявлю и константу, чтоб с ней поиграться
    const int SIZE = 4;
    string(*GetData_addresses[SIZE])(string SRC) = {&GetDataFromDB, &GetDataFromWebServer, &GetDataFromUser, &GetDataFromSkype };
    // вместо адресов при перечислении элементов массива можно указать просто имена (указатели) функций
    string(*GetData_fun_names[SIZE])(string SRC) = { GetDataFromDB, GetDataFromWebServer, GetDataFromUser, GetDataFromSkype };
    // смешанное перечисление
    string(*GetData_mixed[SIZE])(string SRC) = { GetDataFromDB, GetDataFromWebServer, &GetDataFromUser, &GetDataFromSkype };
    void ShowInfo(string SRC, string (*fooPtr)(string str))
    {
    cout

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

      заранее сорри за некропостинг
      // 1. почему объявление такое же, как у двумерного массива?
      я не уверен но может это из-за того что мы создаем массив с указателями на функции? тобишь по факту это указатель на указатели на функции
      потому и объявление как у двумерного массива
      берем адреса для ячеек а в них пихаем указатели для функций

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

      друг друг, стой. Ты не на стековерфлоу зашёл, успокойся немного хахаххаа

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

    ставлю лайк, спасибо за ваши уроки)😀

  • @nap0le0nb0naparte7
    @nap0le0nb0naparte7 7 лет назад +3

    Круто!!!

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

    Спасибо.

  • @antandgen
    @antandgen 6 лет назад +11

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

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

      Перемешивать обработчики прерываний в микроконтроллера удобно

    • @nukacake13
      @nukacake13 5 лет назад +4

      если ты мало чего запоминаешь - заведи тетрадь/блокнот

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

    Спасибо, сижу блин в академии тема: Лямбда выражения, препод как-то поверхностно объяснил. Вот сначала посмотрел про указатели на функции)

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

    Я в своё время сформулировал для себя, что имя функции это её метка или адрес. Вызов через косвенную адресацию.

  • @ide9827
    @ide9827 Год назад

    автор красавчик неимоверный ура

    • @Empty_line
      @Empty_line Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

    • @ide9827
      @ide9827 Год назад +1

      @@Empty_line в любом случае, раньше я не знал про это вообще ничего, а теперь знаю что такая штука в принципе существует и смогу ей воспользоваться на плюсах при необходимости
      это круто

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

    Полезная функция

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

    Спасибо, толково ))

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

    Cергію. Після спроб дізнатись щось на інших каналах, на #SimpleCode повертаюсь немов додому. Дякую!

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

    Круто, полиморфизм в процедурном стиле)

  • @qqorvex
    @qqorvex 7 лет назад +3

    Спасибо за уроки. А работа с файлами будет?

  • @ИоаннДейкун
    @ИоаннДейкун Год назад

    привет из 2023. Спасибо большое за уроки!"

  • @Тэдифан
    @Тэдифан 2 года назад

    Очень класные видео спасибо за контент

  • @АртимаркШильд
    @АртимаркШильд 2 года назад +1

    Сергею, большое спасибо за уроки!
    Вопрос к знатокам.
    Как быть, если "сторонняя" функция принимает аргументы?
    Допустим:
    string foo1 (int x); (возвращает строку с х в конце)
    string foo2 (int x);
    то вот так уже не работает,
    void GetFrom (string (*foo)(int x))
    {
    cout

    • @Сергей-т9д7в
      @Сергей-т9д7в 2 года назад

      Именно так, с дополнительным аргументом. GetFrom(string(*foo)(inx x), int x) {};
      И вызов соответственно GetFrom (foo1, 42);
      Если вам не нравится такой способ передачи данных в функцию, то нужно представить себе, каким он должен быть по вашему разумению, и попытаться реализовать. К примеру использовать переменные-буферы в общей зоне видимости. Ну или побороть чувство чего-то не того между (foo1(42)) , в случае которого вы сразу передаете результат работы функции foo1 (т.е. стринг) , и (foo1,42) - смотрите, даже на один знак меньше требуется)

    • @АртимаркШильд
      @АртимаркШильд 2 года назад

      @@Сергей-т9д7в , спасибо большое за ответ.
      Буду разбираться.

  • @shaman4946
    @shaman4946 Год назад +1

    Спасибо за урок!!! А может кто-нибудь подсказать как сделать так чтобы пользователь не вводил ShowInfo(DataFromBD); ручками в коде, а чтобы он, например, вводил в консоли DataFromBD и ему выходили данные?

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

    Приведено 2 варианта реализации: 1й Вариант - определяет ссылку на функцию, и нет возможности в эту ссылку добавить реализацию через {} - к примеру то же действие вывода на экран - cout, 2й вариант - в конце - создает функцию в которой есть своя реализация внутри { cout...} с вызовом по ссылке функций Data..., однако, без возможности передачи параметров. Вообщем не не вижу для себя удобства - так как если создавать свою функцию, то зачастую нужно передавать параметры в вызываемые по ссылке функции. А если мы внутри main создаем эту конструкцию - то тогда и ссылок ненадо - прямые обращения к функциям быстрее и короче

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

      Van Dyke, полностью согласен! Реализовать 2 вариант с передаваемыми параметрами можно , но супер не удобно. Так что по сути ваше утверждение полностью верно, намного быстрее и читабильнее вывести функцию напрямую.

  • @АлександрЯркин-й9я
    @АлександрЯркин-й9я 4 года назад +3

    Вернулся пересмотреть после видео с абстрактными классами :)

  • @borisfrolov1046
    @borisfrolov1046 Год назад

    Полезно и понятно)

    • @Empty_line
      @Empty_line Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

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

      @@Empty_line о нет!! об этом явно нельзя молчать!!!!!!!!!!

    • @Empty_line
      @Empty_line 10 месяцев назад +1

      @@hatred58 В смысле?

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

      @@Empty_line чувак тебе самому норм об этом в каждом комменте писать?))

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

      @@hatred58 Пока не дождусь ответа

  • @РустамКаримов-х6щ
    @РустамКаримов-х6щ 6 лет назад +2

    Читайте Подбельского... там все тоже самое из прошлого века. Ну и скажу что это очень давно придумано в С++ (на самом деле использовано в с++ как и ООП) как и многое другое... Указатели на функции очень круто использовать для меню... поспорил как-то в прошлом веке кто напишет определенное меню на с++ или визуал бейсик.. типа.... я чуть ли не в блокноте на с++ напишу меню... либо среда визуал бейсик (с подсказками). на один день опоздал... проиграл спор (три дня на задачу вне работы.) Но я показал оппоненту... что как за пять минут расширить функционал меню за счет указателей на функции, когда ему пришлось бы тоже самое сделать опять за три дня... с тех пор началась моя любовь к с++.

  • @JohnSmith-es2fh
    @JohnSmith-es2fh Год назад

    такой момент, а можно ли сделать перегрузку функции, которая принимает функцию через указатель
    (как пример: одна функция принимает обычные функции, а другая - функции с указателями)

  • @mannas273
    @mannas273 4 года назад +9

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

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

    через консоль можно вызвать нужную функцию?

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

    Огромное спасибо! Да.. я из этого урока зачерпнул полезного. Но вопросы остались: Каким образом возможно протащить параметры различных типов, через эту связку? Что бы параметры можно было задать в функцию ShowInfo(), потом какую то их часть обработать в её теле, какую то в теле конечных функций.

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

      Ну думаю на ответ с различными типами данных в параметре помогут шаблонные функции, а вот на второй вопрос к сожалению ответа дать не могу

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

      @@Miiazzma как вы думаете? я за два года нашёл ответы на свой вопрос? или нет? 😅

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

      @@BrownAleks да?

  • @alexyakoveno4682
    @alexyakoveno4682 Год назад

  • @pigsel2509
    @pigsel2509 Год назад

    А есть возможность сделать указатель на встроенную функцию, такую как min() или max()?

    • @Empty_line
      @Empty_line Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

  • @СергейСергиевский-ц1ц

    Архангельский просто отдыхает.

  • @_drevn1y_
    @_drevn1y_ Год назад

    super

    • @Empty_line
      @Empty_line Год назад

      С начала он говорит что указатель на функцию не требует начальной инициализации а потом делает это😶

    • @_drevn1y_
      @_drevn1y_ Год назад

      @@Empty_line ну и

    • @Empty_line
      @Empty_line Год назад

      @@_drevn1y_ Ну и почему?

    • @_drevn1y_
      @_drevn1y_ Год назад

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

  • @etniqa3638
    @etniqa3638 6 лет назад +15

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

    • @vitusink6445
      @vitusink6445 5 лет назад +3

      Это будет не много, давай ты подкопишь годик-другой а потом кинешь :)

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

      Извини, но это звучит так высокомерно.

    • @baki-taki
      @baki-taki 4 года назад

      Ну как, заработал и кинул? Или пошёл в другом направлении, любопытно очень

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

      @@baki-taki уже пошел на стажировку по фронту, но начался карантин и ее перенесли. Постараюсь, чтобы взяли. Писал на spring boot и angular курсовую, если интересно.

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

      Steve фронт это же не c++, как твой путь сложился, расскажи

  • @Непрофессионалымы

    чел, мне очень обидно за Тебя. Такой огромный, качественный труд, а теперь убрали монетизацию. это треш. Дай Бог Тебе здоровья. это зачтется. Я вчера проходил собес на джуна, жду ответ, думаю что все хорошо. Учился на Твоих видосах. спасибо

    • @DaniilS98
      @DaniilS98 Год назад

      Работаешь уже?)

    • @Непрофессионалымы
      @Непрофессионалымы Год назад

      @@DaniilS98 угу)

    • @DaniilS98
      @DaniilS98 Год назад

      @@Непрофессионалымы слушай, а ты с c++ начал? Расскажи плиз как вообще учился че делал

    • @Непрофессионалымы
      @Непрофессионалымы Год назад +2

      @@DaniilS98 изначально учился на java . javarush ресурс был такой. в рамках интересов начал работать с arduino и есп. где то год пилил свои проекты и изучал ардуино. вообще она стала такой прослойкой для меня между java и c++. потом возникли сложности с трудовой деятельностью и нужно было выбирать дальнейший путь и профессию. решил учиться на c++. посмотрел этот канал, попрактиковался и вылез на hhru. получил около 50 отказов и грубо говоря 51 взяли на работу. почему не остался на java? потому что просто больше понравились плюсы

    • @Непрофессионалымы
      @Непрофессионалымы Год назад +2

      @@DaniilS98 но самое главное я очень очень много писал. безобразного и отвратительного кода, который все-таки работал, но показывать который стыдно. без этого никак не научишься. нужно придумать себе проект и реализовывать его от начала и обязательно до конца. в какой-то момент поймешь что пришло время показать себя

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

    Со второго раза только понял о чем речь и логику. Но так до конца не понял, в чем все-таки необходимость и преимущество использования промежуточной функции ShowInfo(), по сравнению с тем, что я могу напрямую обращаться к фунциям коллег, например GetDataFromBD() ?

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

      Потому что назначение функции GetDataFromBD() - это возвратить какое либо значение и только. А уже функция ShowInfo() ,,напечатает,, это значение в консоль. И если вдруг понадобится еще это возвратимое значение передать иному пользователю по сети , то будет достаточно создать самому еще функцию к примеру
      void TransmitOverNetwork () с указателем ,затем в void main() сразу после ShowInfo() ; вызывать её с параметрами TransmitOverNetwork (GetDataFromBD); и тогда городить всякие условия (костыли) внутри функции void main() уже не надобно. Читаемость(упорядочность) кода повышается (конечно если только хорошо понимаешь .что такое указатели...)

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

    Ржал от "дата из астрала"))))

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

    Надо было объяснять на примере коллбеков. А то пример с коллегами прям какой-то сложный

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

      да про коллбеки интересно было юы видео

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

    а делегаты в С++ есть?

  • @АндрейЕремеев-п8ь
    @АндрейЕремеев-п8ь 5 лет назад +1

    все понятно. Но как все это запомнить. А еще дальше сколько информации ..

    • @roji7486
      @roji7486 5 лет назад +4

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

  • @sambobeach
    @sambobeach 7 лет назад

    Здраствуй, после месяца(или чуть больше) использования visual studio, мне пришло уведомление" лицензия закончиться через 5 дней. Смогу ли я пользоваться програмой через 5 дней?

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

      А я по незнанию удалил. Думал скачал платную версию. И скачал заново. Как я недодумался спросить :))

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

    До этой формулировки я пытался амперсанд ставить перед именем