Тёмный

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

Mimocake
Подписаться 1,1 тыс.
Просмотров 10 тыс.
50% 1

Сегодня я расскажу о такой важной теме языка С++, как указатели.
Если это видео вам понравится, то обязательно ставьте лайки и подписывайтесь на канал: вам не сложно, а мне приятно.
Телеграм: t.me/mimocaketg
#C++ #указатели
На момент загрузки 604 подписчика

Наука

Опубликовано:

 

19 апр 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 62   
@glasderes
@glasderes Месяц назад
Братан, хорош, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
@nelavas4651
@nelavas4651 Месяц назад
точно такой же коммент видел
@saikle_
@saikle_ Месяц назад
Последователь екстримкода
@user-en6ey3mv2q
@user-en6ey3mv2q Месяц назад
О, Вы тоже человек высокой культуры.
@kotleni
@kotleni Месяц назад
@@saikle_ Все мы...
@wizaral
@wizaral Месяц назад
Харош)))
@ryzen144
@ryzen144 20 дней назад
спасибо большое, сильно помог мне осознать что вообще такое указатель и зачем ему ссылка. всего за пять минут обьяснил главное понятным языком
@itsmusic2597
@itsmusic2597 9 дней назад
Бро, очень помогаешь! Все доходчиво и понятно, спасибо огромное!
@JohnJTraston
@JohnJTraston Месяц назад
Кто всё детство программировал на ассемблере указателей не боится.
@VoiCedml
@VoiCedml Месяц назад
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;
@serb1146
@serb1146 Месяц назад
Класс! А я думал уже всё забыл. В универе на С/С++ начинал учиться прогать. Дз было - реализация вставки элемента в двусвязный список после определенного значения. До сих пор помню то чувство, когда "ура! работает! ". Удачи и спасибо за видео!
@user-ws1ud4op9i
@user-ws1ud4op9i Месяц назад
я не хочу показаться душнилкой, но что ты тут "все забыл", когда это буквально примитивная инфа. А про список - это вообще смешно.
@nbasked
@nbasked 10 дней назад
Реально, такой классный канал, но так мало подписчиков(((
@alex_s_ciframi
@alex_s_ciframi День назад
указатель - это переменная, которая хранит адрес. Во, даже в 5 секунд уложился :D Медленно печатаю
@pl.elektronik
@pl.elektronik Месяц назад
Сразу подписался. Продолжай!!!
@GagagJdjskk
@GagagJdjskk Месяц назад
Молодец, побольше такого!
@BYGUR
@BYGUR 18 часов назад
Как включить функцию size()? Чет тот же CodeBlocks ее подсвечивает, но выдает 'size' was not declared in this scope' (код один в один)
@yar444ik
@yar444ik Месяц назад
как все чётко разжевал, не как мой препод🥲 спасибо тебе большое
@vladimir_v_it
@vladimir_v_it Месяц назад
Молодец! Спасибо за видео!
@user-mz7gz2fq7g
@user-mz7gz2fq7g Месяц назад
Спасибо ❤❤❤❤❤❤
@user-xc4vl5oj3n
@user-xc4vl5oj3n Месяц назад
Урааа
@fantik86
@fantik86 Месяц назад
Посмотрев 20 минутное видео не поймешь как они работают. Практикуйтесь, друзья.
@developnya
@developnya Месяц назад
респект
@Infinite_Kaizen
@Infinite_Kaizen Месяц назад
Привет, я недавно начал изучать с++ и складывается впечатление что гайдов куча, говорят на нем можно сделать что угодно но когда ищу фактические примеры то осознаю что на нем это либо сложнее в 10 раз чем на любом другом яп либо вообще не делают. Когда у меня появилась идея изучать программирование я не имел конкретных предпочтений, но сейчас захотелось написать хотя бы самую простую 2д пиксельную игру и тут то я узнал что делать игры на с++ та еще жесть... Думаю теперь, а не зря я начал изучать именно его..
@TherryYT
@TherryYT Месяц назад
Выбери сразу свое направление, с++ заточен для всего, но на нем это сложнее. Очевидно, что большинство фреймворков для тех же 2д игр написаны на с++, а ты используешь готовые функции, классы в другом языке. С++ невозможно выучить полностью, так что выбери направление
@mimocake
@mimocake Месяц назад
ну с++ может для некоторых зашкварным показаться, но зато потом любой другой яп будет без проблем заходить. А вообще важно именно понимание того, что ты делаешь. Если ты понимаешь, как и что написать, то все можно на любом яп написать, другое дело, что на некоторых яп некоторые вещи удобнее делать
@justman073
@justman073 Месяц назад
Если ты хочешь написать простую пиксельную 2д игру, то лучше всего подойдёт связка Python + библиотека Pygame, Godot с языком программирования GDScript(похож на python) / C# или Unity / Unity WebGL с C# С/C++ лучше подходят для высокоскоростных или низкоуровневых(драйвера) продуктов, ещё с C легче изучать Язык Ассемблера
@wizaral
@wizaral Месяц назад
​@@TherryYTдумаю если человек поработал с boost, корутинами, шаблонной магией и рекурсивным макросами, то плюсы он знает)
@user-ws1ud4op9i
@user-ws1ud4op9i 20 дней назад
С++ просто мало что умеет из коробки. Есть куча библиотек и уже готовых решений. Надо лишь установить их и начать кодить
@lokomanako8830
@lokomanako8830 Месяц назад
я что то не пойму, что сложного в указателях?
@user-ms3id7jv7v
@user-ms3id7jv7v День назад
Для обывателя будет не очень подробно, например про константные указатели нужно было объяснить что конкретно можно менять, а что нет.
@earned3156
@earned3156 Месяц назад
Го дальше
@_CrystalWave_
@_CrystalWave_ Месяц назад
Godnota
@wandemeir4394
@wandemeir4394 Месяц назад
Про выделенную память не совсем верно. Тут скорее прикол в отличии стека и кучи (heap). На куче можно выделить и гигабайт и 20 если это нужно программе, размер же стека сильно ограничен (по-моему около 2 мегабайтов для линукса). Также в операционной системе есть специальные средства более эффективной работы с кучей, например запись в SWAP разделы. Поэтому современные языки программирования, в том числе и C++ тяготеют к тому, чтобы хранить указать на объект в стеке, а сам объект в куче.
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Месяц назад
в куче достаточно медленная память, причем в раз 800 медленнее. Есть L1 L2 L3 L4 памяти, прочитай
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Месяц назад
и 20 гигов никто выделять не будет, оперативка средняя у людей 16 гигов
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Месяц назад
и работа с кучей не будет никогда более эффективная чем на стеке или еще более быстрой памяти.
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Месяц назад
то что указатели в стеке а объекты в куче это да, но все равно иногда можно чуть больше объекты запихнуть в стек , даже если они больше 8 байт.
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Месяц назад
в любом случае типо потом когда словишь ошибку переполнения стека, что нужно перенесешь в кучу, но его по факту надо под крышак загружать стек. все равно типо в стеке все статически и если ты не словил ошибку стека то потом не словишь.
@O_0wLl
@O_0wLl Месяц назад
Понятно. А зачем он нужен? Почему я не могу делать тоже самое с обычными переменными?
@glasderes
@glasderes Месяц назад
попробуй реализовать связанный список без указателей
@ivanzuraulevic1916
@ivanzuraulevic1916 Месяц назад
Если коротко, то чтобы не засрать стек. Если подробнее, то при вызове подпрограмм(процедуры, функции, методы) передаваемые переменные забрасываются в стек. Что в случае int'а мелочь, а вот в случае массива могут возникнуть проблемы. Особенно если используется рекурсия
@mimocake
@mimocake Месяц назад
Что именно "он"?
@doctor_livsi_pod_phonk
@doctor_livsi_pod_phonk Месяц назад
потому что это структура. на всех структурах самая быстрая работа в стеке, а хранение в куче, так как ты можешь записать допустим 10000000 пользователей в массив к примеру.
@tulenich9948
@tulenich9948 Месяц назад
Если тебе надо через функцию изменять переменную вне неё, то изменять её надо через указатель. Если отправить в функцию саму переменную, то в её рамках ты будешь изменять только копию этой переменной, и если ты вернёшься, то отправленная переменная останется нетронутой. Также полезно с массивами: из функции нельзя вернуть массив, поскольку если ты попытаешься, то ты вернёшь только указатель на неразмеченную память. Однако можно создать массив вне функции и отдать его ей, и она внесёт в него данные. Ещё можно создавать мыссивы через malloc(), который возвращает указатель на выделенную память в куче, которая не имеет ограничений стековой памяти и не зависит от рамок функций.
@tulenich9948
@tulenich9948 Месяц назад
Конечно, я говорю о Си, но я вполне уверен, что в C++ точно так же: Неправильно декларировать указатели как: int* ptr; , поскольку если так декларировать несколько указателей одной строчкой: int* ptr1, ptr2, ptr3; , то на самом деле указателем будет только ptr1, а остальные - просто числами. Чтобы сделать их все указателями, надо делать: int *ptr1, *ptr2, *ptr3; Я сам не знаю, почему так, учитывая то, что по идее, указатель должен быть своим типом данных. Но, как я уже в сказал, это относится к Си, а C++ я не знаю.
@mimocake
@mimocake Месяц назад
Ну вообще да, если декларировать int* p1, p2, то это будет неправильно. Но если декларировать только один указатель, то компилятору будет все равно, где звёздочка, мне просто больше напиться писать int*
@tgitw-tq6iu
@tgitw-tq6iu Месяц назад
Глупость несусветная. Зачем ходить и повторять везде эти поверья? К тому же указатель не имеет никакого отношения к типу. Невежество порождает непонимание и всякие глупые поверья. И вместо того чтобы изучить тему люди бегают и доказывают необходимость всякой чуши.
@DaniilK-hq5go
@DaniilK-hq5go Месяц назад
Бро, фигню не неси. Статическая память в C / C++ это либо static переменные в скоупе (функции, класса и тд), либо то, что называется глобальными переменными (уже не важно static или нет, в данном случае ключевое слово влияет только на видимость переменной в других единицах трансляции). То что ты назвал статикой - локальная / стековая память. Почитай С. Прата, там подробно разъясняются эти темы.
Далее
Указатели и Ссылки C++
7:49
Просмотров 24 тыс.
Проверил Басту на логику
00:44
Просмотров 324 тыс.
Centre Etrangers 2024 Jour 2 exercice 2
52:09
ASMR Programming - Spinning Cube - No Talking
20:45
Просмотров 3,6 млн
ты C++ РАЗРАБОТЧИК?) ага
12:04
Просмотров 224 тыс.
iPhone 12 socket cleaning #fixit
0:30
Просмотров 36 млн
APPLE совершила РЕВОЛЮЦИЮ!
0:39
Просмотров 664 тыс.