Добрый день. Что означает запись вида "int* a =1" ? На что указывает указатель если он позади типа, а не перед переменной? Такой тип записи часто встречается в литературе, или это просто опечатки?
@@Abraham-ce2jt спасибо, я нашел ответ. Это ссылка на тип, устаревшая форма записи. Но в Qt C++ очень популярно (вообще такое ощущение, что Qt это какой-то другой C++), например там необходимы (именно необходимы) вот такие конструкции: Хедер: QPushButton* btn; Реализация: QGraphicsProxyWidget* wgt = scene->addWidget(btn);
Вот за такие уроки я готов платить деньги. А вы делаете это бесплатно! Спасибо вам огромное. Уроки действительно крутые! Большое преимущество в том, что они очень наглядные. Очень!
В благодарность автору, можно вместо того, чтоб пропускать рекламу, смотреть её. Он, конечно, не много получит, но если хотя бы половина его зрителей будут смотреть эту рекламу, а не пропускать, это уже здорово бы помогло ему
0:14 - Что такое указатели? 1:30 - Адрес переменной int a; в оперативной памяти 2:26 - Что произошло при int b = a; 3:05 - Что произошло при int *px =&a; //*px Указывает на адрес в памяти с переменной a. 4:29 - * - Указатель на адрес в памяти. &a В данном случае используется как оператор взятия адреса. 6:11 - Ошибка при присваивании разных типов данных 7:37 - Вывод указателя. px указывает на адрес в памяти переменной int a; // cout
Дударь вообще ни о чем. Тут клюнул, там клюнул. Везде нахватался по чуть-чуть и никакой конкретики. А здесь человек дает исчерпывающие объяснения (ну для новичков по крайней мере). А не так , что вот я вам объяснил тему, но для чего надо не могу сказать, просто запомните и сами потом поймете, когда будете писать код.
Из всех уроков что просмотрел, найбольший пробел у меня именно в указателях, адресах и ссылках, их разименовывании и когда и где именно их применять. Сейчас пересматриваю уже 3й или 4й раз, все никак запомнить не могу главное на 0:14 Спасибо за уроки!
Чувак, ты лучший. Переезжаю сейчас с Java на C++, наткнулся на твой курс, качество материала лучше чем у некоторых курсов на udemy, да еще и бесплатно. Подписка однозначно.
Очень всё доходчиво,спасибо. Хотелось бы маленькие примерчики в конце, где такая многосторонняя связь, указателей, могла бы пригодиться. А, то не понимаешь в чём фишка.
Вся суть указателей проявляется в работе с функциями: т. к. стандартным методом передачи переменных является передача по значению то если вы в функции хотите изменить значение оригинальной переменной у вас это не получится (при передаче по значению функции работают с копиями переменных). В таком случае вас могут спасти указатели: в функцию передается указатель на переменную и тогда уже функция сможет изменять значение оригинальной переменной. Кроме того работа массивами в функциях возможна только через указатели: это сделано специально чтобы не копировать весь массив в функцию а работать напрямую с массивом через указатели. Иначе если копировать весь массив в функцию это будет жрать лишние ресурсы памяти и процессора.
Потрясающе... Вот и все, других слов нет, параллельно прохожу курс на скиллбокс, данный канал просто офигенное дополнение! Не реклама! Отзыв от обычного трудяги)
Немного запутанно для полностью "нулевых" новичков. *px - это содержимое ячейки памяти, _pх - это адрес ячейки памяти ("указатель-pointer")_ , которому можно присваивать другой адрес переменной с помощью '&'. В результате имеем низкий уровень доступа к адресам памяти и регистрам с содержимым, почти на уровне ассемблера (чего почти нет в других С- подобных яз.). *Но в общем эти С++ курсы, лучшие из всех и не только на рус. (и даже превосходят по максимально понятной подаче (для всех) многие С++ посредственные и объемные книжонки).*
Спасибо большое за уроки. Все понятно и доходчиво. Только очень хотелось бы пару простых примеров применения этого. Для закрепления материала и наглядности.
Довольно сложная тема для меня - указатели, а Вы, Сергей, всё так понятно и просто объяснили. Спасибо Вам большое за такие интересные, понятные и подробные курсы. Всего Вам наилучшего
вот почему все на планете через жопу все объясняют, когда вот человек старается и все сразу понятно становится, продолжай в том же духе, все просто предельно понятно
Меня интересует вот такой вопрос: в каких случаях требуется работа с указателями. Т.е. если можно менять значения напрямую в переменной a, зачем это делать через указатели.
Чисто от себя могу сказать, для создания структур данных, где заранее не известны размеры входящих элементов, или удобно работать с ссылками нежели чем с отдельными экземплярами классов. Практический пример: выслали тз, необходимо распарсить файл, считать с него данные и создать структуру, которая представляет собой молекулу аспирина, т.е. уже можно увидеть, что будет класс атом, который хранит много информации, будет класс связь, которая хранит информацию о кратностях связей допустим и будет класс молекула в виде какой-то реализации графа, так вот с ссылками в этом графе молекулы работать удобнее, так как копировать каждый класс атом в каждую ячейку графа займёт долгое время. Надеюсь понятно написал. Да и в целом при создании даже базовых структур данных, такие как динамические массивы, связанные списки, хэш-таблицы, бинарные деревья с указателями проще работать. Но ещё больше я надеюсь, что вы уже сами разобрались с этим вопросом. Успехов в обучении!
Я понимаю, что в C++ это работает, но очень уж вводит в заблуждение такая форма записи кода: int *px = &a; Мои аргументы: *px - разыменовывает указатель, т.е. возвращает значение, которое хранится в конкретной области памяти, на которую ссылается указатель. px - хранит в себе адрес. А мы при объявлении как бы пытаемся присвоить адрес хранимого в переменной значения не , а , что создает большую путанницу в голове. Переменные в строке выше я заключил в . Для начинающих было бы понятнее, если бы вместо: int *px = &a; написали бы код вот так: int *px; px = &a;
Так же подумал когда смотрел, интересно узнать почему создатели языка сделали именно так, а то реально какая то путаница получается в слове разыменовывание которое получается работает в разных направлениях одновременно.
Так тоже можно, но есть проблема. Если писать int* px; то никаких проблем, но если int* px, cx; то обьявится указатель на int и переменная типа int. Не сильно наглядно получается, не правда ли?
вот теперь я вообще запутался. Я не понимаю, что делает "&" в int *px = &a; ?? Если *px - это значение переменной а , то правильней было бы так и писать - int *px = a; ?
Спасибо вам за уроки. Всегда было интересно как же создаются сами языки программирования? Желаю вам удачи! И напоминаю совсем скоро "юбилей" нас будет 10 ТЫС.)
А всё таки, зачем использовать указатели при работе с переменными, если можно непосредственно работать с самими переменными? Или это применимо в случае, если переменная допустим в Main, а используют её в какой-то другой функции?
Можно ли обойтись без указателей, как явления - вот в чём вопрос?.. Нет, с адресами в памяти работать придётся - но нужны ли для этого специальные сущности или это просто синтаксический сахар? Если мы знаем размер адреса (который, видимо, традиционно равен размеру машинного слова), то просто берём целое (знаковое или беззнаковое, как нам удобнее) и храним в нём адрес. Отмечаем в блокнотике или где ещё размер того, адреса чего мы собираемся хранить - и всё! Если в языке существует некий оператор или функция, позволяющий найти ближайшее подходящее место в куче, ищем то место. Если в языке есть оператор или функция, позволяющие разместить переменную по конкретному адресу, используем его! В итоге исчезает вся проблема контекстной зависимости всей этой символики с её звёздочками и амперсандами. Просто работаем с адресами, как с целыми беззнаковыми числами.
всё, я проверил, если указать указателем на указатель указывающий на переменную а, а потом вывести на экран оба эти указателя, у них адрес переменной но про практику?
просмотров больше 24 тыс и при этом всего лишь 1.2 тыс лайков!!! народ, вам что, тяжело нажать одну кнопку? или вы не умеете это делать? давайте будем более активными и сознательными, и хоть как-то поможем автору в развитии канала!!!
*Так для чего нужны указатели?* Ответ на этот вопрос (а я по этому запросу и нашел это нудное объяснение) я в ролике так и не услышал. Примеры применения?
Не совсем точно, указатель указывает на "первый" байт в ячейках памяти, хранящих определенный тип данных. Например, для short "первый" байт из двух (т.к. short 2 байта занимает).
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
Добрый день. Что означает запись вида "int* a =1" ? На что указывает указатель если он позади типа, а не перед переменной? Такой тип записи часто встречается в литературе, или это просто опечатки?
@@Abraham-ce2jt спасибо, я нашел ответ. Это ссылка на тип, устаревшая форма записи. Но в Qt C++ очень популярно (вообще такое ощущение, что Qt это какой-то другой C++), например там необходимы (именно необходимы) вот такие конструкции:
Хедер:
QPushButton* btn;
Реализация:
QGraphicsProxyWidget* wgt = scene->addWidget(btn);
@@greatskydrake9531 Это не ссылка на тип, а классический указатель, проинициаоизирванный значением. "int* a" и "int *a" - это одно и то же.
@@svvonline1 да уже неактуально, теперь бы в аллокаторы вьехать
Блин, это в 100 раз лучше, чем лекции в универе. Всё чётко, быстро и наглядно. Всей группой пользуемся вашими уроками. Спасибо за труд!
+++, учусь в универе на программного инженера и не знаю что делал бы,если бы не этот канал
Вот за такие уроки я готов платить деньги. А вы делаете это бесплатно!
Спасибо вам огромное. Уроки действительно крутые!
Большое преимущество в том, что они очень наглядные. Очень!
Пожалуйста! Удачи в обучении =)
В благодарность автору, можно вместо того, чтоб пропускать рекламу, смотреть её. Он, конечно, не много получит, но если хотя бы половина его зрителей будут смотреть эту рекламу, а не пропускать, это уже здорово бы помогло ему
я не вижу никакой рекламы при просмотре. может быть раньше была, но сейчас, видимо, автор ее отключил.
@@ВячеславБондаренко-м2и иногда в начале программы выскакивает
@@LenTos1337 не знал) Буду смотреть)
0:14 - Что такое указатели?
1:30 - Адрес переменной int a; в оперативной памяти
2:26 - Что произошло при int b = a;
3:05 - Что произошло при int *px =&a; //*px Указывает на адрес в памяти с переменной a.
4:29 - * - Указатель на адрес в памяти. &a В данном случае используется как оператор взятия адреса.
6:11 - Ошибка при присваивании разных типов данных
7:37 - Вывод указателя. px указывает на адрес в памяти переменной int a; // cout
@Brexit че
Простите, но это оху**ный мужик, идеально все объясняет и показывает, лайк с 3х акков!!!!
Смотрел Дударя и тебя, могу сказать, что ты очень хорошо объяснил! Спасибо большое.
Дударь вообще ни о чем. Тут клюнул, там клюнул. Везде нахватался по чуть-чуть и никакой конкретики. А здесь человек дает исчерпывающие объяснения (ну для новичков по крайней мере). А не так , что вот я вам объяснил тему, но для чего надо не могу сказать, просто запомните и сами потом поймете, когда будете писать код.
@@Рыззе согласен
Дударь вливает гавно в головы людей.
Что за индивидуумы ставят дизы? Уроки то бесплатны, и преподаватель классный:)
@Мой Властелин преподы))
дЫбилы, раз непоняли, то что мой 5-ти летний ребенок, уже понял
Те кто смотрел на скорости не x2
Дизы от тех, кто не понял указатели после просмотра)
От тех кто так и не услышал для чего они нужны и где применяются.
когда нибудь я напишу программу, которая поставит лайк на каждое видео с этого плейлиста
Из всех уроков что просмотрел, найбольший пробел у меня именно в указателях, адресах и ссылках, их разименовывании и когда и где именно их применять. Сейчас пересматриваю уже 3й или 4й раз, все никак запомнить не могу главное на 0:14 Спасибо за уроки!
В разы круче всех курсов, за которые просят денег. Вы лучший!
Я никак не мог понять как и зачем нужны указатели, но Вы очень понятно объяснили, и я теперь полностью осознаю всë что хотел! ❤
тоже вот начал си изучать волею судьбы и тупил на старте, тут посмотрел и очень понятно, благодарю, лайк, подписка, колокольчик, коммент😁
Чувак, ты лучший. Переезжаю сейчас с Java на C++, наткнулся на твой курс, качество материала лучше чем у некоторых курсов на udemy, да еще и бесплатно. Подписка однозначно.
Аналогичная ситуация) Видео классные у автора
Очень всё доходчиво,спасибо. Хотелось бы маленькие примерчики в конце, где такая многосторонняя связь, указателей, могла бы пригодиться. А, то не понимаешь в чём фишка.
Вся суть указателей проявляется в работе с функциями: т. к. стандартным методом передачи переменных является передача по значению то если вы в функции хотите изменить значение оригинальной переменной у вас это не получится (при передаче по значению функции работают с копиями переменных). В таком случае вас могут спасти указатели: в функцию передается указатель на переменную и тогда уже функция сможет изменять значение оригинальной переменной.
Кроме того работа массивами в функциях возможна только через указатели: это сделано специально чтобы не копировать весь массив в функцию а работать напрямую с массивом через указатели. Иначе если копировать весь массив в функцию это будет жрать лишние ресурсы памяти и процессора.
@@igor06991 просто занимался уборкой и поставил видео в фоновом режиме. Специально не сидел и не смотрел
@@fillmalyshev9377 Спасибо большое!
@@fillmalyshev9377 а если указать адрес переменной без создания указателя?
@@Vov4ik048 Зачем если есть указатели
Большое тебе спасибо. Храни тебя Господь
Потрясающе... Вот и все, других слов нет, параллельно прохожу курс на скиллбокс, данный канал просто офигенное дополнение! Не реклама! Отзыв от обычного трудяги)
спасибо огромное за ваши уроки, я не знаю как бы я всё это учил без вас
#указатели #SimpleCode #урокипрограммирования
Немного запутанно для полностью "нулевых" новичков.
*px - это содержимое ячейки памяти,
_pх - это адрес ячейки памяти ("указатель-pointer")_ , которому можно присваивать другой адрес переменной с помощью '&'.
В результате имеем низкий уровень доступа к адресам памяти и регистрам с содержимым, почти на уровне ассемблера (чего почти нет в других С- подобных яз.). *Но в общем эти С++ курсы, лучшие из всех и не только на рус. (и даже превосходят по максимально понятной подаче (для всех) многие С++ посредственные и объемные книжонки).*
Лучше бы сначала объяснил px, а потом *px, так более понятно.
И да знаю, что уже целый год прошел)
@@lmrbzv да пошел бы ты на три буковки дружок ;D
На рисунок смотреть тоже надо! Для кого рисовал учитель? Переменая это адрес в памяти и значение. Все понятно.
* Самые понятные, видео уроки по c++, на всём (RU) youtube *
Спасибо большое за уроки. Все понятно и доходчиво. Только очень хотелось бы пару простых примеров применения этого. Для закрепления материала и наглядности.
Довольно сложная тема для меня - указатели, а Вы, Сергей, всё так понятно и просто объяснили. Спасибо Вам большое за такие интересные, понятные и подробные курсы. Всего Вам наилучшего
Спасеба! Объяснил! От души!
Отличное объяснение.Всё сразу стало понятно,без путаницы! Спасибо большое !!!
Сделай урок на тему указателей на узатели. Очень интересно.
Спасибо за урок.
Побольше бы реальных примеров где это можно хорошо и удобно применять
Везде.
Спасибо огромное! Лучшие уроки С++
Гений. Дай бог тебе здоровья!
КРАСАВЧИК ЕЕЕЕЙ.
КАК АБЯСНЯЕТ ЛЯЯЯЯ КРАСАТА
ЕБАТЬ!ОТВЕЧАЮ!
Огромное спасибо за урок! Доступно, доходчиво и внятно!
Если в компиляторе использовать только *px, то можно через него также менять переменную а:
a= 5
int *px = &a;
*px = 2
cout
Он это сделал для того, чтобы показать возможности указателей, что необязательно с одним работать
Полезность Paint'a определяется полезностью его пользователя 🙂 (Перефразировано)
Я в шоке. Поняла с полу слова все, что вы говорили, хотя тема звучит довольно запутанно. Замечательное объяснение. Спасибо.
Сергей !! спасибо Вам огромное за уроки !!!!
Вот так ЧИТЫ в играх и работают. Спасибо Сэнсей++!
Спасибо Вам большое за качественные уроки!
Большое спасибо, очень познавательные и интересные уроки)
Пожалуйста!
Уроки просто шикарные, автору респект, но вот ДЗ маловато что-то для такого их количества.
вот почему все на планете через жопу все объясняют, когда вот человек старается и все сразу понятно становится, продолжай в том же духе, все просто предельно понятно
Большое спасибо автору за работу! Поддержку автору!
Очень хорошие уроки, спасибо:
int **c = &b; // Указатель на указатель
cout
указатель на указатель, указатель на ссылку с этим проблемы. В записи int** c=&b. b - это указатель, на который указывает указатель с???
Лучшие уроки по плюсам! 👍
Ты топ лучше уроков на Ютубе нет
Спасибо Сергей! За ваш труд.
Хочется больше практики. А так огромное спасибо)
Меня интересует вот такой вопрос: в каких случаях требуется работа с указателями. Т.е. если можно менять значения напрямую в переменной a, зачем это делать через указатели.
Чисто от себя могу сказать, для создания структур данных, где заранее не известны размеры входящих элементов, или удобно работать с ссылками нежели чем с отдельными экземплярами классов.
Практический пример: выслали тз, необходимо распарсить файл, считать с него данные и создать структуру, которая представляет собой молекулу аспирина, т.е. уже можно увидеть, что будет класс атом, который хранит много информации, будет класс связь, которая хранит информацию о кратностях связей допустим и будет класс молекула в виде какой-то реализации графа, так вот с ссылками в этом графе молекулы работать удобнее, так как копировать каждый класс атом в каждую ячейку графа займёт долгое время. Надеюсь понятно написал.
Да и в целом при создании даже базовых структур данных, такие как динамические массивы, связанные списки, хэш-таблицы, бинарные деревья с указателями проще работать.
Но ещё больше я надеюсь, что вы уже сами разобрались с этим вопросом. Успехов в обучении!
Было бы интересно посмотреть как работают те или иные вещи в реальной работе программ
Спасибо, очень хорошо объясняешь. У тебя талант!
Спасибо за лекции.
Иногда правда кажется что на ассемблере проще)
Огромная благодарность!!!!
Спасибо за информацию, очень интересно))
очень полезная информация, спасибо
Спасибо, всё понятно, помог разобраться
Если к а можно обратиться через а, зачем создавать px. наверное я пойму это позже, а уроки действительно шик!
Спасибо за объяснение темы указателей
Благодарю, Спасибо 🙏
бро ты лучший, делаешь добро! Тебе в преподы надо идти)
Спасибо за знания
Хорошо объясняешь спасибо
Спасибо огромное , наконец-то дошло что и как )
Спасибо за урок!
Отличное видео! Все понятно.
Топ уроков на ютубе
Я ВСЕ ПОНЯЛ!!!
СПАСИБО!!!!!
иду дальше, цель - все уроки)
Спасибо за урок!!!!
кул стори бро только надо начинать с того зачем Страуструп так угорел и напихал их в ++ (примеры практической пользы)
14:16 для себя
СПАСИБО !!!
вооо! Тема, в которой без поллитры не разобраться для меня было.
Спасибо)
Большое спасибо за уроки!) как работают указатели мне понятно, но не понятно, пока что, какой смысл работать с указателями если есть переменные )))
будут еще уроки по другим языкам программирования? очень хорошо все объясняете. Спасибо!
cout
Очень хорошее объяснения, сколько пытался понять что такое указатели - никак не получалось. Везде слишком занудно и сухо объясняют. Спасибо!
спасибо было сложно, и пока еще непонятно зачем это
Я понимаю, что в C++ это работает, но очень уж вводит в заблуждение такая форма записи кода:
int *px = &a;
Мои аргументы:
*px - разыменовывает указатель, т.е. возвращает значение, которое хранится в конкретной области памяти, на которую ссылается указатель.
px - хранит в себе адрес.
А мы при объявлении как бы пытаемся присвоить адрес хранимого в переменной значения не , а , что создает большую путанницу в голове.
Переменные в строке выше я заключил в .
Для начинающих было бы понятнее, если бы вместо:
int *px = &a;
написали бы код вот так:
int *px;
px = &a;
Спасибо, полезный комментарий. Действительно стало понятнее.
Так же подумал когда смотрел, интересно узнать почему создатели языка сделали именно так, а то реально какая то путаница получается в слове разыменовывание которое получается работает в разных направлениях одновременно.
А если вот так? int* px = &a; Инициализируем переменную px, которая имеет тип int* - указатель на int.
Так тоже можно, но есть проблема.
Если писать int* px; то никаких проблем, но если int* px, cx; то обьявится указатель на int и переменная типа int. Не сильно наглядно получается, не правда ли?
вот теперь я вообще запутался. Я не понимаю, что делает "&" в int *px = &a; ?? Если *px - это значение переменной а , то правильней было бы так и писать - int *px = a; ?
Спасибо вам за уроки. Всегда было интересно как же создаются сами языки программирования? Желаю вам удачи! И напоминаю совсем скоро "юбилей" нас будет 10 ТЫС.)
Я помню всё что обещал =)
Уже 57)
@@romanrotarmel1396 Еще 47
100 000 (-_-
@@ВадимСергеев-к9щ 105 000
Спасибо! Доступно!)
Ахах, Антон, и ты тут)
Под указатели можно использовать auto в качестве типа, тут просто уже вопрос читаемости
спасибо))
я начинающий с++ник, но мне кажется тут проще было рассказать про тип данных "auto"
большое спасибо из 2022
А всё таки, зачем использовать указатели при работе с переменными, если можно непосредственно работать с самими переменными? Или это применимо в случае, если переменная допустим в Main, а используют её в какой-то другой функции?
3:32 мин для перемменой Б тоже выделяется кусок памяти как и для а? ( b = a)
Красиво
Можно ли обойтись без указателей, как явления - вот в чём вопрос?.. Нет, с адресами в памяти работать придётся - но нужны ли для этого специальные сущности или это просто синтаксический сахар? Если мы знаем размер адреса (который, видимо, традиционно равен размеру машинного слова), то просто берём целое (знаковое или беззнаковое, как нам удобнее) и храним в нём адрес. Отмечаем в блокнотике или где ещё размер того, адреса чего мы собираемся хранить - и всё! Если в языке существует некий оператор или функция, позволяющий найти ближайшее подходящее место в куче, ищем то место. Если в языке есть оператор или функция, позволяющие разместить переменную по конкретному адресу, используем его! В итоге исчезает вся проблема контекстной зависимости всей этой символики с её звёздочками и амперсандами. Просто работаем с адресами, как с целыми беззнаковыми числами.
супер! спс. помогло ;)
Под Финский хеви метал хардкодишь .В этом твой секрет успеха))
Спасибо
супер))))))
Видел бы ты конспекты мои по твоим урокам)))
спасибо за ваш урок! не могли бы вы объяснить что такое паттерн синглтон? после просмотра многих видео в ютубе до сих пор не очень понятно
1) что будет, если указать указателем на другой указатель?
2) как нам указатели могут помочь на практике?
всё, я проверил, если указать указателем на указатель указывающий на переменную а, а потом вывести на экран оба эти указателя, у них адрес переменной
но про практику?
Qwerty Uiop наверно уже не актуально, но указатели нужны чтобы в функцию передавать переменные из других функций (коротко)
Спс, помог
@@MrMikhailDJ да все актуально
просмотров больше 24 тыс и при этом всего лишь 1.2 тыс лайков!!! народ, вам что, тяжело нажать одну кнопку? или вы не умеете это делать? давайте будем более активными и сознательными, и хоть как-то поможем автору в развитии канала!!!
все смотрят плейлист от урока к уроку без перерыва! автопереключение на следующее видео
Не привык ставить лайки
@@Артём-р1ь7ф При чем тут привык или нет? Это минимальная благодарность человеку, за то что ты просмотрел и что-то взял для себя
@@simongreyse4171 у всех идет автопереключение, но многие все-равно проявляют свою толику хоть какой-то благодарности, хотя бы в виде лайка
Круто!
*Так для чего нужны указатели?*
Ответ на этот вопрос (а я по этому запросу и нашел это нудное объяснение) я в ролике так и не услышал. Примеры применения?
Нашел применение?
Не совсем точно, указатель указывает на "первый" байт в ячейках памяти, хранящих определенный тип данных. Например, для short "первый" байт из двух (т.к. short 2 байта занимает).
спасибо
Пожалуйста!