Всё об указателях в C++ за 20 минут

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

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

  • @glasderes
    @glasderes 9 месяцев назад +101

    Братан, хорош, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

    • @nelavas4651
      @nelavas4651 9 месяцев назад +3

      точно такой же коммент видел

    • @saikle_
      @saikle_ 9 месяцев назад +10

      Последователь екстримкода

    • @ДмитрийДеньщиков-т1т
      @ДмитрийДеньщиков-т1т 9 месяцев назад +8

      О, Вы тоже человек высокой культуры.

    • @kotleni
      @kotleni 9 месяцев назад +3

      @@saikle_ Все мы...

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

      Харош)))

  • @serb1146
    @serb1146 9 месяцев назад +8

    Класс! А я думал уже всё забыл. В универе на С/С++ начинал учиться прогать. Дз было - реализация вставки элемента в двусвязный список после определенного значения. До сих пор помню то чувство, когда "ура! работает! ". Удачи и спасибо за видео!

    • @5классвиленкин-ъ4п
      @5классвиленкин-ъ4п 9 месяцев назад +3

      я не хочу показаться душнилкой, но что ты тут "все забыл", когда это буквально примитивная инфа. А про список - это вообще смешно.

  • @all_cats_are_codders
    @all_cats_are_codders 27 дней назад

    Продолжай в том же духе, у тебя отлично получается. В ютубе на русском по с++ мало кто снимает, Winderton и еще пару, но ты делаешь лучше их в плане визуализации, с такими примерами как этот 2:32, наааа много лучше понять.👍

  • @VoiCedml
    @VoiCedml 9 месяцев назад +19

    5:10 Классическая путаница. Имя массива - это имя переменной которая имеет тип массива, а не тип указателя. Просто существует стандартное преобразование из типа массива в тип указателя. Считаю это важным проговаривать, а то начинающие начинают отождествлять эти типы.
    8:33 Это требует не visual studio, это требует стандарт языка. "Subscribe!!" является типом const char[12], который нельзя неявно преобразовать в char*, но можно в const char*. Возможно заблуждение зарождается из практики языка C, где литерал строки действительно возвращает не константный массив, и из-за неявной возможности преобразования в указатель, думают, что сам литерал имеет тип указателя.
    10:42 delete примененный к массиву вызовет деструктор только для первого элемента, но освободит всю память, аллоцированную под этот массив (хотя это, как я помню, implementation-defined behavior). Для массивов из объектов классов, которые сами что-то аллоцируют в куче, это утечка памяти всегда.
    12:00 Прикольно было бы еще рассказать про квалификаторы const в таких случаях и их преобразование. Например, тип const int** pp не сможет указывать на int* p, в то время как const int* p может указывать на int x;

    • @Денис-ь8ь7с
      @Денис-ь8ь7с 6 дней назад

      delete, не соответствующий по форме new - это UB. Больше тут размышлять особо нет смысла )

  • @IIDRAGONBUSTII
    @IIDRAGONBUSTII 3 дня назад

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

  • @JohnJTraston
    @JohnJTraston 9 месяцев назад +27

    Кто всё детство программировал на ассемблере указателей не боится.

    • @Zoom-ez8ps
      @Zoom-ez8ps 7 месяцев назад +9

      Мне страшно за людей, которые всё лето детство программировали на ассемблере

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

      ​@@Zoom-ez8psНа самом деле он не так сложен, как кажется

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

      @@Zoom-ez8ps Не бойся за них, они как правило очень обеспеченные люди с перспективами роста )

    • @wakezup
      @wakezup 2 месяца назад

      @@Zoom-ez8ps мне страшно от людей, которые всё детство программировали на ассемблере

    • @sergeyb2823
      @sergeyb2823 Месяц назад +1

      @@wakezup А в те времена ничего другого особо и не было. На ZX spectrum только ассемблер и был. И после него ваш с++ просто детский лепет.

  • @Денис-ь8ь7с
    @Денис-ь8ь7с 6 дней назад

    9:05 переменная i размещается на стеке, имеет автоматическое время жизни (для статического размещения нужно добавить ключевое слово static). Еще есть неточность про статическое время жизни и невозможность записи другого значения. Пример - обычная глобальная (не const) переменная.

  • @itsmusic2597
    @itsmusic2597 8 месяцев назад +1

    Бро, очень помогаешь! Все доходчиво и понятно, спасибо огромное!

  • @hollisgr
    @hollisgr 6 месяцев назад +1

    Я зашел, поставил лайк, поставил то-сё. Видосик я посмотрел полностью. Чувак красава, охуенный видос. Кип дуин вот ю дуин, бро

  • @ryzen144
    @ryzen144 8 месяцев назад +1

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

  • @ВасилийПетров-ф1м
    @ВасилийПетров-ф1м 5 месяцев назад

    Спасибо за контент, давай больше про с++!

  • @goczt
    @goczt 7 месяцев назад +21

    Название видео: *Всё* об указателях в *С++*.
    Содержание видео:
    1. Беглый обзор Сишного (без ++) синтаксиса и применения указателей (за исключением new/delete вместо malloc/free)
    2. Ни слова об указателях на объекты-члены классов и на функции-члены классов
    3. Ни слова о том, что в современных плюсах явное использование delete считается дурным тоном (за исключением случаев, когда пишется класс непосредственно ответственный за управление памятью), предпочтение отдаётся RAII обёрткам, автоматически освобождающим память
    4. Ни слова об умных указателях и семантике владения
    5. Лишь вскользь упомянутые итераторы, которым отдаётся предпочтение в современных плюсах вместо арифметики указателей с C-style массивами
    6. Вроде как ни слова о проблемах double-delete/double-free (возможно прослушал и про это говорилось при имплементации списка)
    Предвкушаю ответ: "Но это видео для новичков и тут показаны основы!!!!"
    К видео было бы меньше вопросов, если бы оно называлось "Основы указателей в языке Си" или типа того.
    Некоторые комментаторы даже не поняли зачем вообще нужны ссылочные типы, потому-что толком не объяснены преимущества и недостатки динамического выделения памяти и такой структуры данных как связный список.
    Короче, типичный видос первокурсника, либо самоучки, начитавшегося всяких мусорных сайтиков "обучающих" С++. Желающим реально изучить плюсы и их практическое применение соболезную - качественного контента на русском языке именно для новичков лично я нигде не видел, можно посоветовать только почитать какое-нибудь свежее издание Страуструпа (и то скрепя сердцем - начинающим довольно трудно читается и редко когда дочитывается).

    • @Gizabr
      @Gizabr 5 месяцев назад +2

      Видно ты сделал видео лучше ;)

    • @goczt
      @goczt 5 месяцев назад

      @@Gizabr Типичный бессодержательный недо-"аргумент", когда мозгов не хватает ответить что-то по делу.
      Я не сделал, а вот Константин Владимиров сделал - лекция 2 базовый курс "ссылки и указатели". Гораздо более подробный (и, следовательно, длинный) разбор, от человека, который действительно разбирается. Но оно не подходит для новичков и само по себе не самостоятельное, чтобы узнать *ВСЁ* об указателях и ссылках нужно часов 9 материала отсмотреть и предварительно хоть немного знать Си.
      Вам смотреть не советую, у вас чувство логики отсутствует - вам в программирование путь заказан

    • @АлександрМасный-с9р
      @АлександрМасный-с9р 3 месяца назад +7

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

    • @wag1bro
      @wag1bro 2 месяца назад +1

      как сказал когда-то сталин: критикуешь- предлагай

    • @goczt
      @goczt 2 месяца назад

      ​@@wag1bro Так мой коммент наполовину и состоит из предложения читающему (в т.ч. автору) самостоятельно разобраться в указанных темах, а также максимально краткий ввод в принципы программирования на плюсах.
      Так что твоя бестолковая попытка применить устойчивое выражение в таком контексте максимально неуместна. В прочем от человека симпатизирующего сталину ничего умнее ожидать и не приходится.
      Заодно отвечу первому комментатору - жалкие визги в стиле "сперва добейся / а что ты сделал сам" это во-первых не аргумент, а просто попытка перевести субъект разговора на более "удобный". А во-вторых свидетельствуют только о том, что информацию и факты о реальности вы своей пустой головой воспринимать не способны.

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

    Хорошо объяснил спасибо .

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

    как все чётко разжевал, не как мой препод🥲 спасибо тебе большое

  • @nbasked
    @nbasked 8 месяцев назад +1

    Реально, такой классный канал, но так мало подписчиков(((

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

    Молодец, побольше такого!

  • @проха_картоха
    @проха_картоха 7 месяцев назад

    Ура спасибо большое, я понял как эта шняга работает🎉🎉🎉🎉

  • @Vivavatnik
    @Vivavatnik 5 месяцев назад

    Самое короткое и емкое видео по С++))) Респект!

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

    А почему не записываем переменные как void *variable; не уважаем стандарты написания кода? Двойной указатель ещё может указывать для делегирования конструктора, очень красиво реализовано в библиотеке sqlite3.

  • @KFaraday
    @KFaraday 2 месяца назад

    Икари Синдзи на превью. Очень подходит.

  • @pl.elektronik
    @pl.elektronik 9 месяцев назад

    Сразу подписался. Продолжай!!!

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

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

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

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

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

      @@mimocake Спасибо большое за мотивацию! Я изучаю C++ неравномерно. Бывают, попадаются видео на 20 минут о том, что rand() выдает значения от 0 до 1 (правда видел такое, знаю, что неправильно). А бывают потом сразу попадаются видео о векторах и несколько-мерных массивах. И я смотрю их. Бывает на несколько дней забываю о существовании C++. Но изучать c++ бывает очень даже интересно.

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

      @slayer-p6l Да. Я нашел язык программирования C++ от стивен протса 5-ого издания. Все очень растянуто, но есть полезный материал. Я уже узнал что-то.

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

    Привет, я недавно начал изучать с++ и складывается впечатление что гайдов куча, говорят на нем можно сделать что угодно но когда ищу фактические примеры то осознаю что на нем это либо сложнее в 10 раз чем на любом другом яп либо вообще не делают. Когда у меня появилась идея изучать программирование я не имел конкретных предпочтений, но сейчас захотелось написать хотя бы самую простую 2д пиксельную игру и тут то я узнал что делать игры на с++ та еще жесть... Думаю теперь, а не зря я начал изучать именно его..

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

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

    • @mimocake
      @mimocake  9 месяцев назад +2

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

    • @justman073
      @justman073 9 месяцев назад +2

      Если ты хочешь написать простую пиксельную 2д игру, то лучше всего подойдёт связка Python + библиотека Pygame, Godot с языком программирования GDScript(похож на python) / C# или Unity / Unity WebGL с C#
      С/C++ лучше подходят для высокоскоростных или низкоуровневых(драйвера) продуктов, ещё с C легче изучать Язык Ассемблера

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

      ​@@TherryYTдумаю если человек поработал с boost, корутинами, шаблонной магией и рекурсивным макросами, то плюсы он знает)

    • @5классвиленкин-ъ4п
      @5классвиленкин-ъ4п 8 месяцев назад +1

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

  • @КириллДрагонов-п3и
    @КириллДрагонов-п3и Месяц назад +2

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

    • @Камушек-ф1к
      @Камушек-ф1к Месяц назад +1

      Он всё очень понятно же объясняет.

  • @Саша-и9в8з
    @Саша-и9в8з 9 месяцев назад

    Спасибо ❤❤❤❤❤❤

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

    указатель - это переменная, которая хранит адрес.
    Во, даже в 5 секунд уложился :D
    Медленно печатаю

  • @СуннатИбрагимович
    @СуннатИбрагимович 5 месяцев назад

    👍👍👍

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

    Молодец! Спасибо за видео!

  • @fantik86
    @fantik86 9 месяцев назад +2

    Посмотрев 20 минутное видео не поймешь как они работают. Практикуйтесь, друзья.

  • @ДавидВиктаиут
    @ДавидВиктаиут 20 дней назад

    На следующий элемент и предыдущий, если я не ошибаюсь. Я про list

  • @Миха-ь8х
    @Миха-ь8х 6 месяцев назад

    Есть указатель (тип int) указывающий на адрес байта в памяти. Как получить адрес следующего байта(который идёт сразу за ним, а не четвёртый)? Как вывести его содержимое на экран? Как его изменить?

    • @АлександрМасный-с9р
      @АлександрМасный-с9р 3 месяца назад +1

      Вопрос хороший
      Напрямую ответа в ролике нет, но нужны 2 механизма
      1. Разыменование
      2. Явное приведение
      Хочешь сдвинуть на 1 байт, кастуешь (явное приведение) к типу размером в один байт.
      uint32_t sample;
      uint16_t* selector = &sample;
      for(size_t i=0;i

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

    Как включить функцию size()? Чет тот же CodeBlocks ее подсвечивает, но выдает 'size' was not declared in this scope' (код один в один)

  • @uniers
    @uniers 6 месяцев назад +1

    как насчет такой операции: int a = 5; int * p = &a; int & r = &p; return r;

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

      ты ВИСЯЧИЙ УКАЗАТЕЛЬ вернул 🤦👎👎

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

    Про выделенную память не совсем верно. Тут скорее прикол в отличии стека и кучи (heap). На куче можно выделить и гигабайт и 20 если это нужно программе, размер же стека сильно ограничен (по-моему около 2 мегабайтов для линукса). Также в операционной системе есть специальные средства более эффективной работы с кучей, например запись в SWAP разделы. Поэтому современные языки программирования, в том числе и C++ тяготеют к тому, чтобы хранить указать на объект в стеке, а сам объект в куче.

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

      в куче достаточно медленная память, причем в раз 800 медленнее. Есть L1 L2 L3 L4 памяти, прочитай

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

      и 20 гигов никто выделять не будет, оперативка средняя у людей 16 гигов

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

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

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

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

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

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

  • @Hender-n5j
    @Hender-n5j 2 месяца назад

    Дорогой нефор, требовать ещё порция с++. Нефор не пропадать😢.

  • @Anon-jt8pu
    @Anon-jt8pu 6 месяцев назад +1

    0:53 Неправильная картинка. Тем между char и bool будет зазор в три байта. Есть такая погань, как выравнивание. В плюсах определяется через #pragma pack, в структурах - ключевым словом typedef struct packed.

  • @Anon-jt8pu
    @Anon-jt8pu 6 месяцев назад +4

    По итогу видео: заголовок не соответствует содержимому. На самом деле, здесь описаны указатели Си, а не указатели плюсов. Да, в плюсах они также работают, да, в видео есть классы и даже ссылки (которых нет в сях, но есть в плюсах), но от этого описанные простые насильственные указатели плюсовыми не становятся. Фишкой плюсов является именно новая система указателей, базирующаяся на интеллектуальных указателях (смарт-указатели, smart pointers). Началось всё с auto_ptr, который можно инициализировать, но не нужно удалять - о выполнении операции delete позаботится язык, при этом это не подлый garbage collector, который есть в Питоне и подлой Жабе, а честный счётчик ссылок. Можно удалить указатель auto_ptr и явно, присвоив ему nullptr. Поскольку одного auto_ptr оказалось недостаточно, в C++11 запилили ещё парочку полезняшек unique_ptr и shared_ptr/weak_ptr. Может показаться странным, что я сказал "парочку", а перечислил ТРИ типа, но это не так: shared_ptr и weak_ptr настолько неразлейвода, что просто нет смысла их рассматривать в отдельности, тогда как уник - это реально уникальная штуковиночка. Если интересно прочитать про настоящие плюсовые указатели - рекомендую книгу Скота Майерса "Эффективный современный Цэ++" ("Effective modern C++").

  • @hokage1130
    @hokage1130 2 месяца назад

    го про массивы так и далее

  • @МихаилЛитвинов-щ3п
    @МихаилЛитвинов-щ3п 9 месяцев назад

    Урааа

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

    Конечно, я говорю о Си, но я вполне уверен, что в C++ точно так же:
    Неправильно декларировать указатели как:
    int* ptr;
    , поскольку если так декларировать несколько указателей одной строчкой:
    int* ptr1, ptr2, ptr3;
    , то на самом деле указателем будет только ptr1, а остальные - просто числами. Чтобы сделать их все указателями, надо делать:
    int *ptr1, *ptr2, *ptr3;
    Я сам не знаю, почему так, учитывая то, что по идее, указатель должен быть своим типом данных. Но, как я уже в сказал, это относится к Си, а C++ я не знаю.

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

      Ну вообще да, если декларировать int* p1, p2, то это будет неправильно. Но если декларировать только один указатель, то компилятору будет все равно, где звёздочка, мне просто больше напиться писать int*

    • @tgitw-tq6iu
      @tgitw-tq6iu 8 месяцев назад

      Глупость несусветная. Зачем ходить и повторять везде эти поверья? К тому же указатель не имеет никакого отношения к типу. Невежество порождает непонимание и всякие глупые поверья. И вместо того чтобы изучить тему люди бегают и доказывают необходимость всякой чуши.

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

    Бро, фигню не неси. Статическая память в C / C++ это либо static переменные в скоупе (функции, класса и тд), либо то, что называется глобальными переменными (уже не важно static или нет, в данном случае ключевое слово влияет только на видимость переменной в других единицах трансляции).
    То что ты назвал статикой - локальная / стековая память.
    Почитай С. Прата, там подробно разъясняются эти темы.

  • @ИванКрасноярский-е3я
    @ИванКрасноярский-е3я 7 месяцев назад

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

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

    респект

  • @O_0wLl
    @O_0wLl 9 месяцев назад +2

    Понятно. А зачем он нужен? Почему я не могу делать тоже самое с обычными переменными?

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

      попробуй реализовать связанный список без указателей

    • @ivanzuraulevic1916
      @ivanzuraulevic1916 9 месяцев назад +2

      Если коротко, то чтобы не засрать стек.
      Если подробнее, то при вызове подпрограмм(процедуры, функции, методы) передаваемые переменные забрасываются в стек. Что в случае int'а мелочь, а вот в случае массива могут возникнуть проблемы. Особенно если используется рекурсия

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

      Что именно "он"?

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

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

    • @tulenich9948
      @tulenich9948 9 месяцев назад +4

      Если тебе надо через функцию изменять переменную вне неё, то изменять её надо через указатель. Если отправить в функцию саму переменную, то в её рамках ты будешь изменять только копию этой переменной, и если ты вернёшься, то отправленная переменная останется нетронутой.
      Также полезно с массивами: из функции нельзя вернуть массив, поскольку если ты попытаешься, то ты вернёшь только указатель на неразмеченную память. Однако можно создать массив вне функции и отдать его ей, и она внесёт в него данные.
      Ещё можно создавать мыссивы через malloc(), который возвращает указатель на выделенную память в куче, которая не имеет ограничений стековой памяти и не зависит от рамок функций.

  • @Antinormanisto
    @Antinormanisto 5 дней назад

    7:25 я ничего не понимаю

  • @wesnik329
    @wesnik329 7 дней назад

    Люди я не понял всё понял про ссылки и указатели

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

    Главный вопрос... Зачем??? Я не понимаю объясните

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

      что зачем?

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

      @@MathPTU что?

    • @akaikangaroo
      @akaikangaroo 2 месяца назад

      Тут уже в соседнем треде все объяснили

  • @CurS-yp3qw
    @CurS-yp3qw Месяц назад

    Не понрмаю что в них страшного, это одна их самах простых тем в C++, она интуитивно понятна

    • @Antinormanisto
      @Antinormanisto 5 дней назад +1

      В таком случае мне страшно думать, что в с++ дальше

  • @MteamKioS
    @MteamKioS 5 месяцев назад

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

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

    Godnota

  • @reverse_g0ty857
    @reverse_g0ty857 5 месяцев назад

    Секс, но это не про С++, а про моего батю.

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

    Го дальше

  • @Людмила-м2й4л
    @Людмила-м2й4л 3 месяца назад

    Этот человек не знает слово вода, чисто выжатый материал и только

  • @danildil3909
    @danildil3909 Месяц назад

    "Указатель на void практически не используется"
    type erasure: Я ЧТО ДЛЯ ВАС ПРОСТО ШУТКА?!)