Указатель - это всего лишь номер, хранящий числовой индекс для местоположения памяти. Каждая нетривиальная программа на каждом языке нуждается в таких количествах, чтобы отслеживать, где интересные функции и данные. На некоторых языках использование указателей скрыто - вы просто видите какой-то идентификатор типа «employee_name» и внутренне компилятор или интерпретатор упорядочивается для хранения и передает указатель на него, так как ему нужно, чтобы программа работала так, как это предусмотрено языком, но они всегда там внизу.
Если вы не видите использование указателя, вы не всегда можете узнать, какие операции на этом языке дешевы и которые несут расходы.
В некоторых языках, таких как VB, раньше использовались более продвинутые типы данных, такие как ассоциативные контейнеры (std::map
, std::unordered_map
), связанные списки, графики и т. Д. Недоступны; необходимо использовать неуклюжие функции, которые внутренне используют C или C++ для отслеживания отношений между элементами данных. Работая непосредственно на C++, вы можете сами создавать такие типы данных, чтобы моделировать произвольные отношения с точными поведенческими, эффективными и полезными для использования компромиссами памяти, которые вам подходят.
C++ предоставляет указатели так, чтобы у вас был явный контроль над тем, проходит ли область памяти, используемая существующим объектом, в разных частях программы, потенциально предоставляя им доступ для изменения значения или даже освобождения памяти. Это более эффективно, чем другие языки, такие как Java, Ruby и C#, где менее очевидно, какой код имеет доступ к некоторым данным по сравнению с копией этих данных, когда копирование может произойти, когда данные больше не нужны. Такие вещи, как сбор мусора, пытаются отслеживать использование данных, но обычно приводят к проблемам производительности, неэффективности и непредсказуемым срокам уничтожения - независимо от того, зависит ли это от приложения.
C++ наследует указатели от C, и гораздо меньше использования для них на C++, чем в C. Это, конечно, не означает, что они бесполезны: у них * много * использования. Возьмите хорошую книгу или учебник. – NPE
так много учебников по указателям c и C++ ... –
Как еще вы могли бы создавать объекты динамически? –