Что такое null pointer. null c++ что это. nullptr c++ что это. nullptr c++11. Урок #54

Поділитися
Вставка
  • Опубліковано 27 січ 2025

КОМЕНТАРІ • 187

  • @ГлебДомрачев-ь7э
    @ГлебДомрачев-ь7э 4 роки тому +257

    Уважаемые программисты! Перед тем как закрывать дверь (присваивать указателю nullptr) не забывайте смывать (использовать delete), во избежание переполнения стока (стека).)

    • @kadencode5347
      @kadencode5347 2 роки тому +42

      нет, не стека, а кучи.

  • @sof_blade
    @sof_blade 4 роки тому +124

    За 13 минут нужной информации больше, чем за 3 часа пары в универе. Вы великолепны!!! Спасибо

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +35

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

  • @s3rbug
    @s3rbug 7 років тому +87

    Спасибо за уроки! Продолжайте в том же духе

  • @ПавелПопов-й9э
    @ПавелПопов-й9э 2 роки тому +5

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

  • @dertyazik
    @dertyazik 2 роки тому +3

    Просто лучшие видео по C++. Все кратко ясно и понятно

  • @sgimancs
    @sgimancs 5 років тому +41

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

    • @michaelivanov1605
      @michaelivanov1605 5 років тому +7

      А она до сих пор растёт)

    • @stilljunior1764
      @stilljunior1764 4 роки тому

      @@michaelivanov1605 , да;)

    • @funnypineapple5381
      @funnypineapple5381 3 роки тому +2

      @@michaelivanov1605 и это "до сих пор" продолжается до сих пор...

    • @_xdrop_fastx_magic123
      @_xdrop_fastx_magic123 2 роки тому

      @@funnypineapple5381 жиза,как успехи?

    • @Zack-ti1lj
      @Zack-ti1lj 2 роки тому +3

      Вместе мы сила

  • @bleeding333
    @bleeding333 2 роки тому +30

    Кто сейчас учится кодить на плюсах 20-ой версии, хочу сказать.
    Я понял, что компилятор, после оператора delete, сам затирает и значение и адрес(видимо фактически сам делает то, что показано в видео).
    То есть, если посмотреть через отладчик, то после вызова оператора delete, указатель не будет иметь ни значения, ни адреса в памяти, таким образом шанс ошибиться стал намного меньше.
    По крайней мере я так понял, сам эту штуку проверив, если я не прав или что-то не так написал, прошу поправить меня! :)

    • @ДильбарМухамедова-щ3я
      @ДильбарМухамедова-щ3я Рік тому +8

      Прочитай 10 раз : Оператор delete удаляет данные, но в памяти может статься мусор. Поэтому в указатель можно записать NuLL или 0(ноль). А чтобы совсем уничтожить адрес в указателе, в указатель записывают nullptr
      delete pa; // удалили данные из памяти
      pa = nullptr; // удалили адрес в указателе, теперь указатель без адреса

    • @sleepyNovember_project
      @sleepyNovember_project Рік тому +4

      @@ДильбарМухамедова-щ3я это и так понятно, он о другом, лучше ты прочитай 10 раз что он написал

    • @rizroz3955
      @rizroz3955 10 місяців тому +1

      @@sleepyNovember_project, там какой-то другой адрес, не равный nullptr, разбираться нужно.

    • @TherryYT
      @TherryYT 10 місяців тому

      Вовремя ответил ​@@rizroz3955😂😂😂

    • @theodoretryman4289
      @theodoretryman4289 3 місяці тому

      Кстати да, я тоже заметил, что лишь один delete удаляет и адрес и данные .... Думал, что у меня, что-то с кодом не так, а оказалось, что это из-за более новой версии С++ (прямо как с NULL ... все же прогресс не стоит на месте) Рад что я не один с этим столкнулся )

  • @tala293
    @tala293 7 років тому +16

    7:52 вот тут немного непонятно:
    мы ведь знаем адрес на который указывает указатель, но по тому адресу нет данных(т.к как их очистили delete)
    и ошибка вылетела из-за того что повторно используется delete на ненулевой адрес (в отладчике проверял)

  • @clipfailer
    @clipfailer 3 роки тому +37

    Боже, как же интересна работа с памятью, особенно, когда ты более-менее понимаешь суть. После такого хочется копаться во всём этом и продолжать учиться!

    • @mal1n778
      @mal1n778 Рік тому +2

      Мне тоже нравится работа с памятью!

    • @lstarbox3765
      @lstarbox3765 Місяць тому

      @@mal1n778 как успехи?

    • @mal1n778
      @mal1n778 Місяць тому

      @@lstarbox3765 емае) не ожидал получить ответ на коммент, которому год, все нормально, курс видео прошел уже давно, щас практикую unreal engine 5, но с c++ работают маловато :(

  • @MrBin_
    @MrBin_ Рік тому

    спасибо! теперь я понял. очень доступное объяснение отличия NULL от nullptr на примере перегруженной функции

  • @pavelios3577
    @pavelios3577 6 років тому +2

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

  • @vladimirdiadichev6140
    @vladimirdiadichev6140 7 років тому +15

    Спасибо

  • @Ermine882
    @Ermine882 7 років тому +11

    Очередное спасибо за урок.

  • @Max_Stupa
    @Max_Stupa 6 років тому +1

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

  • @1oneorigin50
    @1oneorigin50 7 років тому +24

    такое малое количество лайков,за такие шикарные уроки...обидно

  • @pavelefin9069
    @pavelefin9069 7 років тому +71

    Уважаемый Сергей ты можешь сделать рубрику где вы будете отправлять исходники с ошибками а мы будем их
    исправлять

    • @sgimancs
      @sgimancs 5 років тому +8

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

    • @augustvishnevsky9258
      @augustvishnevsky9258 3 роки тому +13

      Могу тебе свои проекты покидать, братан))0))

    • @Wineikoo
      @Wineikoo 3 роки тому +1

      @@augustvishnevsky9258 ахахахах

    • @рустемнасибуллин-к3т
      @рустемнасибуллин-к3т 2 роки тому

      @@augustvishnevsky9258 а че, тема

  • @archiechellaut9483
    @archiechellaut9483 3 роки тому

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

  • @05lda
    @05lda Рік тому +7

    После урока пошел читать статьи о nullptr, т.к остались некоторые вопросы. Какого было мое удивление, когда я увидел, что большинство авторов статей просто берут текст данного видео, даже не меняя код.

  • @osvab000
    @osvab000 5 років тому +31

    Всем привет! в 2017 версии после delete, - удаляется не только значение, но и адрес

    • @platov.z
      @platov.z 4 роки тому

      Properties -> C/C++ -> General -> SDL Checks.

  • @mr.warpunch6007
    @mr.warpunch6007 3 роки тому

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

  • @facellesLessons
    @facellesLessons 4 місяці тому +1

    Как круто подготовиться к Олимпиаде с вашими видео.

  • @chap_01
    @chap_01 3 роки тому +1

    Толково объяснил. Лайк.

  • @moscow_in_FIRE
    @moscow_in_FIRE 5 років тому +5

    как можно вас поддержать ??? мотивировать дальше выпускать такие ролики ??? Ещё раз спасибо вам за такое подробное описание

  • @immortalpwc
    @immortalpwc 2 роки тому

    Спасибо, отличные уроки!

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

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

  • @nello3878
    @nello3878 5 років тому +63

    Я специально вызвал утечку памяти циклом и у меня вся оперативка забилать прога не вылетела и у меня залагал пк 👌

    • @_e_mask
      @_e_mask 3 роки тому +8

      изваруща

    • @Обучение-е2щ
      @Обучение-е2щ 3 роки тому +24

      Хех, а ведь можно скомпилировать в exe и кинуть комунибудь, как вирусняк)

    • @nello3878
      @nello3878 3 роки тому +2

      @@Обучение-е2щ я уже это сделал

    • @Azantys-w6h
      @Azantys-w6h 3 роки тому

      @@nello3878 коменту год уже, достиг результатов?)

    • @nello3878
      @nello3878 3 роки тому

      @@Azantys-w6h да я его за 20 мин сделал когда психанул с другим проектом

  • @ТаннурМаратбек

    Спасибо вам Сергей
    \

  • @kola33258
    @kola33258 7 років тому +4

    Спасибо за инфу)

  • @Salavat1k
    @Salavat1k 5 років тому +39

    Вернулся к этому ролику с ролика по односвязным спискам (на данный момент #133)
    Без этого ролика застопорился тот. Добавил к каждой строке комментарий, вроде стало понятнее:
    //-------------------------------------
    int *pa = new int;
    *pa = 10;
    cout

    • @TheWladberlin
      @TheWladberlin 5 років тому +11

      Из #133 ?!! Ого! Здравствуйте Senior Engineer

    • @ravshan_2001
      @ravshan_2001 4 роки тому +1

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

    • @laft31
      @laft31 4 роки тому

      Спасибо!

    • @lmrbzv
      @lmrbzv 4 роки тому +4

      чтоб не путать int *pa (создание указателя) и *pa (разыменование), советую писать так:
      вместо int **pa, писать int** pa
      (Текст выделен типо там звездочки, ну вы поняли)

    • @daniillevi5866
      @daniillevi5866 4 роки тому +3

      @@lmrbzv в новой версии автоматически так и записывается

  • @Kapusta123
    @Kapusta123 2 роки тому +1

    отличный урок!

  • @Ms001man
    @Ms001man 6 років тому +1

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

  • @eugenepopov-2834
    @eugenepopov-2834 5 місяців тому +1

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

  • @gagikarakelyan6014
    @gagikarakelyan6014 4 роки тому +1

    Спасибо!

  • @robin1hehood
    @robin1hehood Рік тому

    ты красавчик! спасибо!

  • @КириллСафронов-о9д

    Спасибо!🥰

  • @АнтонПодвіянюк
    @АнтонПодвіянюк 4 роки тому

    как это классно ))) спасибо вам!!!!

  • @nikitao_4
    @nikitao_4 12 днів тому

    Спасибо большое за урок!
    Возник вопрос, а когда вообще может понадобиться передавать затирание указателя в функцию (ещё и перегруженную)?

  • @Тетяна-щ8б7п
    @Тетяна-щ8б7п 6 років тому +1

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

  • @dukenukem1675
    @dukenukem1675 3 роки тому +4

    Спасибо огромное Вам!!! Материал огонь, заполнил очень много пробелов в своих знаниях=) единственное, с точки зрения уже не новечка но все ещё изучающего ооп и парадигмы, мой мозг ломается когда вы создаете динамически указатель и я пытаюсь понять зачем создавать именно динамически его и где это может пригодится, можете в кратце рассказать если это используется где то?

    • @Дмитрий-л1к1т
      @Дмитрий-л1к1т Рік тому

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

  • @alexeymi2618
    @alexeymi2618 6 років тому +3

    Спосибооооо :333

  • @Дмитрий-о2х2с
    @Дмитрий-о2х2с 4 роки тому +4

    Привет, Сергей! Как твоё кресло поживает?)

  • @ridanil1
    @ridanil1 6 років тому +1

    хороший контент!

  • @saint8283
    @saint8283 7 років тому +21

    До меня вдруг дошло как работает взлом ресурсов в играх через Artmoney) Оказывается программы могут без особых усилий рыться в чужой памяти. Осталось выяснить по какому принципу можно найти память (в том числе динамическую) выделенную под конкретную программу. Надо заняться написанием собственной Artmoney, как раз опыт будет))

    • @LenTos1337
      @LenTos1337 6 років тому +21

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

    • @Ordinary_man2049
      @Ordinary_man2049 3 місяці тому

      Интересно. Но надо ведь как-то обойти ошибку segmentation fault при попытке получить доступ к памяти вне нашей программы. Или получить доступ к другой программе можно?

    • @saint8283
      @saint8283 3 місяці тому

      @@Ordinary_man2049 я уже давно не пишу на C++. Но я вот спросил у бота, говорит, что можно получить доступ к памяти процесса через API самой винды. Именно так Artmoney и работает.

  • @pavelefin9069
    @pavelefin9069 7 років тому +3

    вопрос а на каком уроке в дальнейшем будет объектно ориентированное програмирование

  • @chelovechek7773
    @chelovechek7773 9 місяців тому

    👍

  • @TNT_ENTERTAINMENT_inc
    @TNT_ENTERTAINMENT_inc Рік тому +2

    В Dev C++ используется стандарт C++ древнее 11
    Bruh. nullptr не работает.

  • @АлександрАнуфриев-э8ю

    Здравствуйте Сергей, Спасибо за очередной полезный урок! Остался вопрос: после удаление ссылки перед затиранием адреса, адрес меняется с выделенного из динамической памяти на 0x00008123. Обязательно затирать содержимое указателя и что за адрес 0x00008123? и в функциях насколько важно затирать указатель...

  • @marik1290
    @marik1290 Рік тому

    я не понял, почему когда проверяем if( pa!=NULL) то выскакивает ошибка. Вроде как говорится, что мы не можем проверить все ячейки памяти, но как бы наш укзатель ведь как сказано "помнит" куда он указывает, а значит имеет так сказать вполне конкретное значение pa. почему компилятор просто не сравнит его с нулём, или ошибка выскакивает по каким-то другим причинам?
    Тайминг 7:55
    "мы не можем перебрать все возможные адреса"/ок, так а что указатель помнит? как себя зовут то он вроде помнит)
    И комментируем мы как раз строчку, где он указывает на ноль. Удаляем значение переменной по адресу. Адрес указатель всё еще помнит, но когда мы этот адресс сравниваем с нулём, мы не можем перебрать все ячейки памяти. Очень уважаю автора. Но то что тут сказано, сформулировано крайне неточно. Хотелось бы пояснения.

    • @Ordinary_man2049
      @Ordinary_man2049 3 місяці тому

      Проблема в том, что программа пытается освободить память, которая ей уже не принадлежит. Когда очищается память, адрес указателя на становится равным 0. То есть не обязательно присваивать указателю адрес 0 или nullptr (автору стоило сказать, что NULL это еще и 0, приведенный к типу (void*). Ошибка появится при попытке работать с этим указателем (разыменовать, присвоить значение по адресу, освободить память), так как программа пытается получить доступ к памяти, который ОС резервирует под другие нужды. Поэтому надо быть аккуратным в этом плане.
      Вы можете просто написать int x = *(int*)(0x10); и получите ошибку, так как пытаетесь прочитать данные из недоступной памяти. Думаю, именно это автор и имел в виду, сказав, что мы не можем перебирать все адреса.

  • @hutoryanin
    @hutoryanin 4 роки тому +1

    *Л. а. й. к. о. с.* за видос.

  • @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ

    Спсб

  • @OXEED12
    @OXEED12 9 місяців тому

    🗽

  • @IvanRebryk
    @IvanRebryk 4 роки тому +3

    Если Null == 0, то функция srand(time(NULL)) == srand(time(0))?
    И да, лучше уроков на Ютубе нету. Пасиб тебе за старания

    • @primate472
      @primate472 4 роки тому

      тоже саме подумав

    • @primate472
      @primate472 4 роки тому

      перевірив srand(time(NUUL)) == srand(time(0))

    • @IvanRebryk
      @IvanRebryk 4 роки тому +2

      @@primate472 вже знаю, але дякую)

  • @Dmitriy2012a
    @Dmitriy2012a 3 роки тому +1

    Спасибо, очень доходчиво. Скажите, пожалуйста, если я создал указатель, например char* ptr; но ещё не присвоил ему никакого значения, можно ли быть уверенным, что он равен nullptr?

    • @putnik7945
      @putnik7945 3 роки тому

      Только если переменная указателя глобальная. Если твой char* ptr локальный, то будет указывать на случайный сегмент памяти

    • @Dmitriy2012a
      @Dmitriy2012a 3 роки тому

      @@putnik7945 Спасибо, теперь буду знать.

  • @DrUlrih
    @DrUlrih 7 років тому +4

    Добрый день,
    как понять когда надо писать foo = nullptr?

    • @trenkvaz
      @trenkvaz 6 років тому +5

      Все он правильно воспринимает.NULL используется для обычных переменных, а nullptr для указателей.
      Это и придумано было для того чтобы при перегрузке функции, можно было их различать.
      Если одна функция принимает указатель, а другая с таким же именем принимает переменную.

  • @ИгорьБологов-в4ш
    @ИгорьБологов-в4ш 4 роки тому

    А можно выделять область ОП, в которой будет ссылка или указатель на другую область ОП и так по цепочке?

  • @moscow_in_FIRE
    @moscow_in_FIRE 5 років тому

    можно ли к вам как-то обращаться за помощью или консультацией ??

  • @ВячеславСмирнов-ь9щ
    @ВячеславСмирнов-ь9щ 10 місяців тому +1

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

  • @isorport32
    @isorport32 6 років тому +4

    почему ноль интовый? указатель на int это же адрес и совсем не факт что он int.

  • @ДрейнРул
    @ДрейнРул 3 роки тому

    6:32

  • @IgorMiner
    @IgorMiner 2 роки тому

    а если delete ниче не чистит?? программирую в code::blocks, вот кусок кода.
    int *pa = new int;
    *pa = 10;
    cout

    • @elnurka
      @elnurka Рік тому

      Это из-за компилятора

    • @mal1n778
      @mal1n778 Рік тому

      Также, но после обнулению адреса, выводится segmentation fault, хз что это, но вроде все ок

  • @thisreal
    @thisreal 7 років тому

    После delete pa, адрес в указателе тоже изменяется - это что означает? Что указатель больше не хранит данный адрес?

    • @alexandrmelnikov6434
      @alexandrmelnikov6434 5 років тому

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

  • @BrownAleks
    @BrownAleks 5 років тому

    Обновился Win 10 pro до (1909 build) и VS обновился следом до последней версии. И теперь заглянуть в чужую область памяти не получается ua-cam.com/video/aSQoBjMdp7M/v-deo.html В момент компиляции появляется сообщение "Вызвано исключение: нарушение доступа для чтения"
    Или у меня с настройками VS что то не то? (настройки по умолчанию)

  • @temshik.invalid
    @temshik.invalid 3 роки тому

    4:00

  • @TheKagby
    @TheKagby Рік тому

    8:20 ребята, домашнее задание

  • @ylikitishnik1946
    @ylikitishnik1946 3 роки тому

    8:14 bandiCAM

  • @РусланЛи-б3х
    @РусланЛи-б3х 4 роки тому +1

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

    • @chap_01
      @chap_01 3 роки тому

      Программа упадёт.

  • @GamerGuyMen
    @GamerGuyMen 4 роки тому +2

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

  • @dmytroprozor
    @dmytroprozor 7 років тому

    #SimpleCode, зачем нужно затирать указатель и обязательно ли это делать всегда?

    • @Slime191
      @Slime191 6 років тому

      затем, чтобы очистить память в 4бит от указателя. 4-же бит?))

    • @zumaxrussia
      @zumaxrussia 6 років тому +3

      все типы данных измеряются байтами) int = 4, double = 8.

    • @alexandrmelnikov6434
      @alexandrmelnikov6434 5 років тому +3

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

  • @SaffronChipMCPE
    @SaffronChipMCPE 4 роки тому +1

    Интересно, после этого плейлиста мы будем Junior или Middle разработчиками?)

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

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

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому

      @@ДмитрийБузницкий-б3н так junior или middle?

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

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

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому

      @@ДмитрийБузницкий-б3н ок, для чего этот язык учите?)

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

      @@SaffronChipMCPE мне читают курсы в институте по С и С++. Плюс, когда я начал познавать программирование, решил выбрать этот язык, потому что знал, что в институте будут ему учить и я не знал, что хочу о программирования. Если у вас есть цель, допустим стать веб разработчиком, то этот язык не для вас. Вам следует смотреть видео и читать книги по JavaScript или Python, может по еще каким-то языкам.

  • @Рома-у4х
    @Рома-у4х 4 роки тому +2

    Я так и не понял зачем это нужно и где это применяется (

  • @yellowmoonishka1725
    @yellowmoonishka1725 2 роки тому

    Ths

  • @galacticenot7189
    @galacticenot7189 4 роки тому

    В чем отличие NULL в СИ И C++?

  • @vovadenys4149
    @vovadenys4149 5 років тому +1

    мне кажется что 0 и NULL не одно и тоже) NULL скорее означает пустоту или ничего а 0 это уже какая не какая но мера измерения) поправте если не так

    • @TheWladberlin
      @TheWladberlin 5 років тому +1

      В днном случае "0" - это макрос
      #define NULL 0
      T.e. для программы одно и то же

    • @АлександрШейка-ц5ь
      @АлександрШейка-ц5ь 4 роки тому +2

      С точки зрения философии вы правы, но для С++ это одно и тоже.

  • @АндрейЛадугин-ч5л
    @АндрейЛадугин-ч5л 3 роки тому +1

    Стоп. Я правильно понял? То есть мы можем взять код памяти, потом удалить его из памяти, а потом пользоваться им до сих пор. Ето прикольно. Хотя я так понимаю там может быть путаница, когда ета память присваивается другому указателю.

    • @Ordinary_man2049
      @Ordinary_man2049 3 місяці тому

      Нельзя пользоваться, пока не присвоишь новый адрес. Segmentation fault

  • @pavelefin9069
    @pavelefin9069 7 років тому

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

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 7 років тому

    up

  • @flarens_ray
    @flarens_ray 6 років тому +3

    Напрашивается вопрос. А Зачем пишут NULL, если это то же самое, что и 0? Ведь 0 писать компактнее и понятнее. Макрос заменяет в коде все NULL на 0 перед компиляцией?

    • @zumaxrussia
      @zumaxrussia 6 років тому +3

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

    • @TheWladberlin
      @TheWladberlin 5 років тому

      NULL всегда виднее. Это некоторого рода метка. Поймешь, когда будешь писать код на десятках страниц.

  • @pavel2232
    @pavel2232 6 років тому +2

    А что значит к примеру int* или int**?

    • @panda9303
      @panda9303 5 років тому +4

      В первом случае это указатель на инт, а во втором это указатель на указатель на инт.

    • @Артём-р1ь7ф
      @Артём-р1ь7ф 5 років тому

      @@panda9303 int** это указать на указатель. И они оба типа int?

    • @panda9303
      @panda9303 5 років тому +2

      @@Артём-р1ь7ф указатель может указывать на любой тип. В данном примере он указывает на тип int. И естественно оба они указывают на инт. То есть по сути мы имеем 2 указателя. Один указывает на инт, другой на этот указатель. Он тоже указывает на инт, подругому нельзя.
      Еще есть указатель на void. Это указатель на общий тип, который может указывать на указатель любого типа. Это все довольно замысловато, но если хочешь разобраться, скачай книгу Стивена Прата про С++ 11стандарта. Это оч хорошая книга для старта.

  • @mikesteinar2713
    @mikesteinar2713 4 роки тому +2

    Так цікаво, що іноді лайку ставити забуваю.

  • @krouvy469
    @krouvy469 4 роки тому

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

    • @krouvy469
      @krouvy469 4 роки тому +2

      Понятно, крч. ПКМ по проекту свойства. Свойства конфигурации - общие. Тут ищите пункт Проверки SDL. В видео они отключены(Или их на 2017 год еще не было, я не в курсе). Со включенными программа сама не даст вам работать по этому указателю снова.

    • @krouvy469
      @krouvy469 4 роки тому

      В противном случаи переменная, скорее всего, будет возвращать вам адрес 00008123

    • @lazzatashrafzyanov9433
      @lazzatashrafzyanov9433 4 роки тому +1

      @@krouvy469 Да, верно. В отладке посмотрел, адрес изменяется на 0x00008123 и ошибка)

  • @Жизньбумеранг-ч5м
    @Жизньбумеранг-ч5м 5 років тому

    Что такое null контакт в вотцапе?

  • @sosd4495
    @sosd4495 4 роки тому

    Зачем нам надо обозначать наши данные нулём ?

    • @АлександрШейка-ц5ь
      @АлександрШейка-ц5ь 4 роки тому +5

      Нулем не данные обозначаются. Ноль присваивается указателю. На рабочем столе кликните правой кнопкой на ярлыке который вам больше не нужен. Выберите "свойства" и в строке "объект" удалите содержимое. Сейчас вы обнулили указатель.

  • @artemgarkavy2010
    @artemgarkavy2010 6 років тому

    кек

  • @K0Tik82
    @K0Tik82 5 років тому +1

    Смотрел урок только ради того, чтобы понять, зачем ввели nullptr, чем он лучше NULL. Но об этом ни слова :-(

    • @olexangrstetsiuk3092
      @olexangrstetsiuk3092 5 років тому +2

      Как раз и было обьяснение , что NULL по обьявлению (поуполчании #define NULL 0 ) компилятор принимает за int=0; . А ,,nullptr,, принимает точно как не int . И тогда ошибочно вызывая какую либо функцию где в параметрах нужно указывать ,,интовое ,, значение в виде переменной pa (из ролика...) компилятор укажет на ,,ошибку в указании параметра,, . В случае с NULL -- компилятор пропусти ошибочный вызов функции с уже вытертой (несуществующей) переменной pa. И представте себе , как непредсказуемо поведет себя программа с ошибочно вызванной функцией... И как долго Вам понадобится искать свою ошибку ???

  • @polmesh2057
    @polmesh2057 2 роки тому

    Спасибо 🙏

  • @igorpoznyakov5486
    @igorpoznyakov5486 5 років тому

    Спасибо

  • @temshik.invalid
    @temshik.invalid 3 роки тому

    9:00

  • @РусланКарнеенко

    Спасибо

  • @ЯрославГоловко-ф6и

    спасибо