Добрый день. Что означает запись вида "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
Дударь вообще ни о чем. Тут клюнул, там клюнул. Везде нахватался по чуть-чуть и никакой конкретики. А здесь человек дает исчерпывающие объяснения (ну для новичков по крайней мере). А не так , что вот я вам объяснил тему, но для чего надо не могу сказать, просто запомните и сами потом поймете, когда будете писать код.
Чувак, ты лучший. Переезжаю сейчас с Java на C++, наткнулся на твой курс, качество материала лучше чем у некоторых курсов на udemy, да еще и бесплатно. Подписка однозначно.
Потрясающе... Вот и все, других слов нет, параллельно прохожу курс на скиллбокс, данный канал просто офигенное дополнение! Не реклама! Отзыв от обычного трудяги)
Очень всё доходчиво,спасибо. Хотелось бы маленькие примерчики в конце, где такая многосторонняя связь, указателей, могла бы пригодиться. А, то не понимаешь в чём фишка.
Вся суть указателей проявляется в работе с функциями: т. к. стандартным методом передачи переменных является передача по значению то если вы в функции хотите изменить значение оригинальной переменной у вас это не получится (при передаче по значению функции работают с копиями переменных). В таком случае вас могут спасти указатели: в функцию передается указатель на переменную и тогда уже функция сможет изменять значение оригинальной переменной. Кроме того работа массивами в функциях возможна только через указатели: это сделано специально чтобы не копировать весь массив в функцию а работать напрямую с массивом через указатели. Иначе если копировать весь массив в функцию это будет жрать лишние ресурсы памяти и процессора.
Довольно сложная тема для меня - указатели, а Вы, Сергей, всё так понятно и просто объяснили. Спасибо Вам большое за такие интересные, понятные и подробные курсы. Всего Вам наилучшего
Спасибо большое за уроки. Все понятно и доходчиво. Только очень хотелось бы пару простых примеров применения этого. Для закрепления материала и наглядности.
вот почему все на планете через жопу все объясняют, когда вот человек старается и все сразу понятно становится, продолжай в том же духе, все просто предельно понятно
Немного запутанно для полностью "нулевых" новичков. *px - это содержимое ячейки памяти, _pх - это адрес ячейки памяти ("указатель-pointer")_ , которому можно присваивать другой адрес переменной с помощью '&'. В результате имеем низкий уровень доступа к адресам памяти и регистрам с содержимым, почти на уровне ассемблера (чего почти нет в других С- подобных яз.). *Но в общем эти С++ курсы, лучшие из всех и не только на рус. (и даже превосходят по максимально понятной подаче (для всех) многие С++ посредственные и объемные книжонки).*
Меня интересует вот такой вопрос: в каких случаях требуется работа с указателями. Т.е. если можно менять значения напрямую в переменной a, зачем это делать через указатели.
Чисто от себя могу сказать, для создания структур данных, где заранее не известны размеры входящих элементов, или удобно работать с ссылками нежели чем с отдельными экземплярами классов. Практический пример: выслали тз, необходимо распарсить файл, считать с него данные и создать структуру, которая представляет собой молекулу аспирина, т.е. уже можно увидеть, что будет класс атом, который хранит много информации, будет класс связь, которая хранит информацию о кратностях связей допустим и будет класс молекула в виде какой-то реализации графа, так вот с ссылками в этом графе молекулы работать удобнее, так как копировать каждый класс атом в каждую ячейку графа займёт долгое время. Надеюсь понятно написал. Да и в целом при создании даже базовых структур данных, такие как динамические массивы, связанные списки, хэш-таблицы, бинарные деревья с указателями проще работать. Но ещё больше я надеюсь, что вы уже сами разобрались с этим вопросом. Успехов в обучении!
Спасибо вам за уроки. Всегда было интересно как же создаются сами языки программирования? Желаю вам удачи! И напоминаю совсем скоро "юбилей" нас будет 10 ТЫС.)
Я понимаю, что в 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; ?
А всё таки, зачем использовать указатели при работе с переменными, если можно непосредственно работать с самими переменными? Или это применимо в случае, если переменная допустим в Main, а используют её в какой-то другой функции?
Можно ли обойтись без указателей, как явления - вот в чём вопрос?.. Нет, с адресами в памяти работать придётся - но нужны ли для этого специальные сущности или это просто синтаксический сахар? Если мы знаем размер адреса (который, видимо, традиционно равен размеру машинного слова), то просто берём целое (знаковое или беззнаковое, как нам удобнее) и храним в нём адрес. Отмечаем в блокнотике или где ещё размер того, адреса чего мы собираемся хранить - и всё! Если в языке существует некий оператор или функция, позволяющий найти ближайшее подходящее место в куче, ищем то место. Если в языке есть оператор или функция, позволяющие разместить переменную по конкретному адресу, используем его! В итоге исчезает вся проблема контекстной зависимости всей этой символики с её звёздочками и амперсандами. Просто работаем с адресами, как с целыми беззнаковыми числами.
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
Добрый день. Что означает запись вида "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
Дизы от тех, кто не понял указатели после просмотра)
От тех кто так и не услышал для чего они нужны и где применяются.
Я никак не мог понять как и зачем нужны указатели, но Вы очень понятно объяснили, и я теперь полностью осознаю всë что хотел! ❤
Чувак, ты лучший. Переезжаю сейчас с Java на C++, наткнулся на твой курс, качество материала лучше чем у некоторых курсов на udemy, да еще и бесплатно. Подписка однозначно.
Аналогичная ситуация) Видео классные у автора
спасибо огромное за ваши уроки, я не знаю как бы я всё это учил без вас
Большое тебе спасибо. Храни тебя Господь
тоже вот начал си изучать волею судьбы и тупил на старте, тут посмотрел и очень понятно, благодарю, лайк, подписка, колокольчик, коммент😁
Потрясающе... Вот и все, других слов нет, параллельно прохожу курс на скиллбокс, данный канал просто офигенное дополнение! Не реклама! Отзыв от обычного трудяги)
Очень всё доходчиво,спасибо. Хотелось бы маленькие примерчики в конце, где такая многосторонняя связь, указателей, могла бы пригодиться. А, то не понимаешь в чём фишка.
Вся суть указателей проявляется в работе с функциями: т. к. стандартным методом передачи переменных является передача по значению то если вы в функции хотите изменить значение оригинальной переменной у вас это не получится (при передаче по значению функции работают с копиями переменных). В таком случае вас могут спасти указатели: в функцию передается указатель на переменную и тогда уже функция сможет изменять значение оригинальной переменной.
Кроме того работа массивами в функциях возможна только через указатели: это сделано специально чтобы не копировать весь массив в функцию а работать напрямую с массивом через указатели. Иначе если копировать весь массив в функцию это будет жрать лишние ресурсы памяти и процессора.
@@igor06991 просто занимался уборкой и поставил видео в фоновом режиме. Специально не сидел и не смотрел
@@fillmalyshev9377 Спасибо большое!
@@fillmalyshev9377 а если указать адрес переменной без создания указателя?
@@Vov4ik048 Зачем если есть указатели
Довольно сложная тема для меня - указатели, а Вы, Сергей, всё так понятно и просто объяснили. Спасибо Вам большое за такие интересные, понятные и подробные курсы. Всего Вам наилучшего
* Самые понятные, видео уроки по c++, на всём (RU) youtube *
#указатели #SimpleCode #урокипрограммирования
Спасибо большое за уроки. Все понятно и доходчиво. Только очень хотелось бы пару простых примеров применения этого. Для закрепления материала и наглядности.
Спасибо за урок.
Побольше бы реальных примеров где это можно хорошо и удобно применять
Везде.
Спасеба! Объяснил! От души!
Отличное объяснение.Всё сразу стало понятно,без путаницы! Спасибо большое !!!
Спасибо огромное! Лучшие уроки С++
вот почему все на планете через жопу все объясняют, когда вот человек старается и все сразу понятно становится, продолжай в том же духе, все просто предельно понятно
Сделай урок на тему указателей на узатели. Очень интересно.
Гений. Дай бог тебе здоровья!
Огромное спасибо за урок! Доступно, доходчиво и внятно!
Сергей !! спасибо Вам огромное за уроки !!!!
Я в шоке. Поняла с полу слова все, что вы говорили, хотя тема звучит довольно запутанно. Замечательное объяснение. Спасибо.
Лучшие уроки по плюсам! 👍
КРАСАВЧИК ЕЕЕЕЙ.
КАК АБЯСНЯЕТ ЛЯЯЯЯ КРАСАТА
ЕБАТЬ!ОТВЕЧАЮ!
Спасибо Вам большое за качественные уроки!
Большое спасибо, очень познавательные и интересные уроки)
Пожалуйста!
Немного запутанно для полностью "нулевых" новичков.
*px - это содержимое ячейки памяти,
_pх - это адрес ячейки памяти ("указатель-pointer")_ , которому можно присваивать другой адрес переменной с помощью '&'.
В результате имеем низкий уровень доступа к адресам памяти и регистрам с содержимым, почти на уровне ассемблера (чего почти нет в других С- подобных яз.). *Но в общем эти С++ курсы, лучшие из всех и не только на рус. (и даже превосходят по максимально понятной подаче (для всех) многие С++ посредственные и объемные книжонки).*
Лучше бы сначала объяснил px, а потом *px, так более понятно.
И да знаю, что уже целый год прошел)
@@lmrbzv да пошел бы ты на три буковки дружок ;D
На рисунок смотреть тоже надо! Для кого рисовал учитель? Переменая это адрес в памяти и значение. Все понятно.
Большое спасибо автору за работу! Поддержку автору!
Если в компиляторе использовать только *px, то можно через него также менять переменную а:
a= 5
int *px = &a;
*px = 2
cout
Он это сделал для того, чтобы показать возможности указателей, что необязательно с одним работать
Уроки просто шикарные, автору респект, но вот ДЗ маловато что-то для такого их количества.
Полезность Paint'a определяется полезностью его пользователя 🙂 (Перефразировано)
Спасибо Сергей! За ваш труд.
Ты топ лучше уроков на Ютубе нет
Вот так ЧИТЫ в играх и работают. Спасибо Сэнсей++!
Огромная благодарность!!!!
Очень хорошие уроки, спасибо:
int **c = &b; // Указатель на указатель
cout
указатель на указатель, указатель на ссылку с этим проблемы. В записи int** c=&b. b - это указатель, на который указывает указатель с???
Было бы интересно посмотреть как работают те или иные вещи в реальной работе программ
Спасибо, очень хорошо объясняешь. У тебя талант!
Благодарю, Спасибо 🙏
Хочется больше практики. А так огромное спасибо)
бро ты лучший, делаешь добро! Тебе в преподы надо идти)
Спасибо)
очень полезная информация, спасибо
Спасибо, всё понятно, помог разобраться
СПАСИБО !!!
Спасибо за информацию, очень интересно))
Спасибо за урок!
Спасибо за лекции.
Иногда правда кажется что на ассемблере проще)
Топ уроков на ютубе
Спасибо за знания
Отличное видео! Все понятно.
Если к а можно обратиться через а, зачем создавать px. наверное я пойму это позже, а уроки действительно шик!
Я ВСЕ ПОНЯЛ!!!
СПАСИБО!!!!!
Спасибо за объяснение темы указателей
Спасибо за урок!!!!
Спасибо огромное , наконец-то дошло что и как )
Хорошо объясняешь спасибо
спасибо))
Меня интересует вот такой вопрос: в каких случаях требуется работа с указателями. Т.е. если можно менять значения напрямую в переменной a, зачем это делать через указатели.
Чисто от себя могу сказать, для создания структур данных, где заранее не известны размеры входящих элементов, или удобно работать с ссылками нежели чем с отдельными экземплярами классов.
Практический пример: выслали тз, необходимо распарсить файл, считать с него данные и создать структуру, которая представляет собой молекулу аспирина, т.е. уже можно увидеть, что будет класс атом, который хранит много информации, будет класс связь, которая хранит информацию о кратностях связей допустим и будет класс молекула в виде какой-то реализации графа, так вот с ссылками в этом графе молекулы работать удобнее, так как копировать каждый класс атом в каждую ячейку графа займёт долгое время. Надеюсь понятно написал.
Да и в целом при создании даже базовых структур данных, такие как динамические массивы, связанные списки, хэш-таблицы, бинарные деревья с указателями проще работать.
Но ещё больше я надеюсь, что вы уже сами разобрались с этим вопросом. Успехов в обучении!
кул стори бро только надо начинать с того зачем Страуструп так угорел и напихал их в ++ (примеры практической пользы)
вооо! Тема, в которой без поллитры не разобраться для меня было.
будут еще уроки по другим языкам программирования? очень хорошо все объясняете. Спасибо!
Спасибо
иду дальше, цель - все уроки)
Спасибо вам за уроки. Всегда было интересно как же создаются сами языки программирования? Желаю вам удачи! И напоминаю совсем скоро "юбилей" нас будет 10 ТЫС.)
Я помню всё что обещал =)
Уже 57)
@@romanrotarmel1396 Еще 47
100 000 (-_-
@@ВадимСергеев-к9щ 105 000
Спасибо! Доступно!)
Ахах, Антон, и ты тут)
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; ?
супер! спс. помогло ;)
я начинающий с++ник, но мне кажется тут проще было рассказать про тип данных "auto"
А всё таки, зачем использовать указатели при работе с переменными, если можно непосредственно работать с самими переменными? Или это применимо в случае, если переменная допустим в Main, а используют её в какой-то другой функции?
спасибо
Пожалуйста!
спасибо было сложно, и пока еще непонятно зачем это
Огромное спасибо за ваши уроки. В данном видео было бы хорошо упомянуть про использование указателей на переменные типа char - очень забавная штука ))
спасибо за ваш урок! не могли бы вы объяснить что такое паттерн синглтон? после просмотра многих видео в ютубе до сих пор не очень понятно
спасибо!
Пушка
Под Финский хеви метал хардкодишь .В этом твой секрет успеха))
большое спасибо из 2022
Под указатели можно использовать auto в качестве типа, тут просто уже вопрос читаемости
Ням-ням. Лайк
Видел бы ты конспекты мои по твоим урокам)))
Легендарный чел, я всё ещё ищу маёвцев
Можно ли обойтись без указателей, как явления - вот в чём вопрос?.. Нет, с адресами в памяти работать придётся - но нужны ли для этого специальные сущности или это просто синтаксический сахар? Если мы знаем размер адреса (который, видимо, традиционно равен размеру машинного слова), то просто берём целое (знаковое или беззнаковое, как нам удобнее) и храним в нём адрес. Отмечаем в блокнотике или где ещё размер того, адреса чего мы собираемся хранить - и всё! Если в языке существует некий оператор или функция, позволяющий найти ближайшее подходящее место в куче, ищем то место. Если в языке есть оператор или функция, позволяющие разместить переменную по конкретному адресу, используем его! В итоге исчезает вся проблема контекстной зависимости всей этой символики с её звёздочками и амперсандами. Просто работаем с адресами, как с целыми беззнаковыми числами.
3:32 мин для перемменой Б тоже выделяется кусок памяти как и для а? ( b = a)