Указатели в программировании: Что такое указатели в программировании — Журнал «Код» программирование без снобизма

Что такое указатели в программировании — Журнал «Код» программирование без снобизма

В программировании есть понятие указателей — особенно часто о них можно услышать в языках вроде C. Указатели считаются сложной темой, и про тех, кто ими пользуются, ходят легенды. Но на самом деле в указателях нет ничего сложного. Сейчас разберём. 

Что такое указатель

Когда мы заводим новую переменную, компьютер выделяет для неё место в оперативной памяти:

Количество этих ячеек зависит от типа данных, который хранится в этой переменной: обычно для целого числа выделяют 2 или 4 байта, для дробного — 8 байт, для строки — столько же, сколько и символов и ещё 1 служебный байт и так далее. Но сколько бы байтов ни выделил компьютер для хранения, он выделяет эти байты подряд, друг за другом, и запоминает два момента:

  1. Сколько байтов занимает переменная.
  2. По какому адресу в памяти находится первый байт этой переменной.

Если совсем упростить, то адрес в памяти — это порядковый номер ячейки, где хранится байт. Так вот, в указателях как раз хранятся адреса памяти, где начинаются разные переменные:

Зачем это нужно

Указатели нужны для того, чтобы можно было напрямую работать с оперативной памятью. Например, указатели позволяют экономить выделение памяти: когда в функцию вместо переменной передаётся указатель, компьютер не создаёт её локальную копию, а обращается к ней напрямую. 

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

Что такое сборщик мусора в программировании

Почему указателями редко пользуются

Если в указатель положить адрес памяти, который выходит за границы, выделенные для этой программы, то мы можем повредить чужие данные. Некоторые языки, например, C++, не всегда перепроверяют то, что делает программист, поэтому там легко сломать не только свою программу, но и весь компьютер.

Дело в том, что компьютеру всё равно, что лежит по адресу, написанному в указателе — данные, переменная или что-то чужое. Всё, что он делает — это идёт по этому адресу и стирает либо записывает туда что-то своё, не задавая лишних вопросов. Это мощная штука, но чтобы ей пользоваться, нужно чётко знать внутреннюю архитектуру памяти и работы компилятора.

В каких языках есть указатели

Самые популярные языки с поддержкой указателей — это всё семейство Си-языков:

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

Также полноценные указатели есть в некоторых современных языках высокого уровня: Java, Pascal и Go.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Программирование для начинающих \ 16.

PInteger;

Возможные значения такой переменной – адреса в памяти, где хранятся адреса, по которым записаны целые числа.

Среди возможных значений указателей выделяется одно особенное значение – nil. Указатель, имеющий значение nil, «никуда не указывает». Указатель nil, считается константой, которую можно присвоить указателю любого типа.

Следующий раздел:

Предыдущий раздел:

Добавить комментарий


указателей (C++) | Microsoft Узнайте

Обратная связь Редактировать

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 2 минуты на чтение

Указатель — это переменная, в которой хранится адрес памяти объекта. Указатели широко используются как в C, так и в C++ для трех основных целей:0003

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

В программировании в стиле C для всех этих сценариев используются необработанных указателей . Однако необработанные указатели являются источником многих серьезных ошибок программирования. Поэтому их использование настоятельно не рекомендуется, за исключением случаев, когда они обеспечивают значительный выигрыш в производительности и нет двусмысленности в отношении того, какой указатель является 9-м.0029 владеет указателем , отвечающим за удаление объекта. Современный C++ предоставляет

интеллектуальных указателей для размещения объектов, итераторов для обхода структур данных и лямбда-выражений для передачи функций. Используя эти языковые и библиотечные средства вместо необработанных указателей, вы сделаете свою программу более безопасной, простой в отладке, понимании и сопровождении. Дополнительные сведения см. в разделе Интеллектуальные указатели, итераторы и лямбда-выражения.

В этом разделе

  • Необработанные указатели
  • Константные и энергозависимые указатели
  • новые операторы и операторы удаления
  • Умные указатели
  • Как создать и использовать экземпляры unique_ptr
  • Как создать и использовать экземпляры shared_ptr
  • Как создать и использовать экземпляры weak_ptr
  • Как создать и использовать экземпляры CComPtr и CComQIPtr

См. также

Итераторы
Лямбда-выражения

Обратная связь

Отправить и просмотреть отзыв для

Этот продукт Эта страница

Просмотреть все отзывы о странице

Программирование на C: указатели и управление памятью — 4

Об этом курсе

12 640 недавних просмотров

В этом курсе мы рассмотрим ключевую концепцию, лежащую в основе любого языка программирования: использование памяти.

В этом курсе вы также получите опыт работы с концепциями программирования, которые являются основополагающими для любого языка программирования. В конце этого курса вы достигнете четвертой вехи в программировании на C со специализацией Linux, открывая дверь к карьере в области компьютерной инженерии. Ваша работа — Программисты, разработчики, инженеры, менеджеры и смежные отрасли в области научных вычислений и науки о данных; — Встроенные системы, такие как транспорт, инженерные сети и аэрокосмическая промышленность; — Робототехника и производство; — IoT (Интернет вещей), используемый в умных домах, автоматизации и носимых устройствах. — IEEE, крупнейшая в мире техническая профессиональная организация по развитию технологий, поставила C на третье место среди языков программирования 2021 года, наиболее востребованных работодателями. (Источник: IEEE Spectrum) Этот курс получил финансовую поддержку от Фонда Патрика и Лины Драи.

Гибкие сроки

Гибкие сроки

Сброс сроков в соответствии с вашим графиком.

Совместно используемый сертификат

Совместно используемый сертификат

Получите сертификат по завершении

100% онлайн

100% онлайн

Начните сразу и учитесь по собственному графику.

Специализация

Курс 4 из 7 в рамках специализации

Программирование на C в Linux

Начальный уровень

Начальный уровень

Мы рекомендуем пройти 3 первых курса программирования на C со специализацией Linux

Количество часов на выполнение

Прибл. 7 часов на выполнение

Доступные языки

Английский

Субтитры: английский

Чему вы научитесь

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

  • Применение арифметики указателей для адресации элементов как одномерных, так и многомерных массивов

  • Использовать массивы строк для хранения списков строк в одной переменной-массиве

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

Навыки Вы получите

  • Компьютерные программирование
  • C программирование
Гибкие сроки

Гибкие нагнетатели

Reset Leadlines в соответствии с Darsemance Deadlines.

Совместно используемый сертификат

Совместно используемый сертификат

Получите сертификат по завершении

100% онлайн

100% онлайн

Начните сразу и учитесь по собственному графику.

Специализация

Курс 4 из 7 в рамках специализации

Программирование на C в Linux

Начальный уровень

Начальный уровень

Мы рекомендуем пройти 3 первых курса программирования на C со специализацией в Linux

Часов для прохождения

Прибл. 7 часов на выполнение

Доступные языки

Английский

Субтитры: английский

Инструкторы

Реми ШАРРОК

Доцент, Telecom Paris

6,323 Учащиеся

7 Курсы

Петра Бонферт-Тейлор

Профессор технических наук | Ассоциированный декан по разнообразию и включению

Инженерная школа Thayer

6 323 Ученики

7 Курсы

Предлагаемые

Dartmouth College 9018

. входит в число крупнейших академических учреждений мира. Дартмут создал уникальную идентичность, объединив свою глубокую приверженность выдающимся гуманитарным наукам и последипломному образованию с выдающимися исследованиями и стипендиями в области искусств и наук и его четырех ведущих аспирантур — Медицинской школы Гейзеля, Школы последипломного образования и повышения квалификации Гуарини. , Инженерная школа Тайера и Школа бизнеса Така.

Institut Mines-Télécom

Institut Mines-Télécom является государственным учреждением, занимающимся высшим образованием, исследованиями и инновациями в области инженерии и цифровых технологий.

Обзоры

4,5

Заполненные звезды StarFiled StarFiled Starhalf, заполненная звезда

8 Обзоры

  • 5 звезд

    84.61%

  • 2 звезды

    15.38%

  • 2 Звезды

    15.38%

  • 2 Звезды

    15.38%

2 Звезды

15.38%

  • . УПРАВЛЕНИЕ — 4 Заполненная Звезда Заполненная Звезда Заполненная Звезда Заполненная Звезда

    от PP 25 июля 2022 г.

    Указатели (снова) и malloc/free. Очень хорошо объяснил. Кодкаст очень помогает.

    Заполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звезда

    от RS 9 июля 2022 г.

    Как всегда для предыдущих курсов специализации, Awesomeeeeeee!

    Заполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звезда

    by MK3 ноября 2022 г.

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

    Отличный курс . Спасибо

    Просмотреть все отзывы

    О специализации «Программирование на C в Linux»

    В этой программе специализации C Programming with Linux, состоящей из семи коротких курсов, вы научитесь писать, читать и отлаживать компьютерные программы на языке программирования C, а также познакомитесь с операционной системой Linux.

  • Оставить комментарий

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *