Добрый день. Вопрос для опытных программистов С++. Два месяца назад начал изучать С++ (за 21 день его освоить не получилось всё-таки). Всё шло довольно просто и понятно, пока не столкнулся с указателями и динамической памятью. Указатели, в принципе, более менее понятны: их роль, их функции. Но когда речь пошла об указателях на указатель и выделении динамической памяти, динамических массивах, пошли сложности. Как часто приходится использовать их при разработке программ на С++? Можно ли вообще без них обходиться ?
Нет, нельзя. Указатели повсюду, даже тем, где явно их не видно. Например контейнер, созданный на стеке, хранит данные всё равно в куче. Если вы даже с этим не разберётесь, то ничего из вас толкового не выйдет.
Указатели в программировании на C++, это как таблица сложения в математике.
Таблица сложения/умножения это просто закэшированные вычисления. Мозгу проще работать с памятью, чем реально проводить вычисления. Вот наверняка, когда вы считаете сколько будет 7 + 7 вы просто вспоминаете, что это 14, а не реально визуализируете некие соотношения 14ти палочек/спичек/яблок. По сути у вас в голове есть эта самая таблица сложения, и лежит она чуть поближе таблицы умножения: в кэше первого уровня, так сказать. Кому-то явно про таблицу сложения в школе рассказывали, кто-то обошелся без этого названия.
Таблицы сложения полезны для обобщения. Скажем при рассмотрении арифметических операции в недесятичных системах счисления. Или в теории групп.
Без знания указателей C++ не имеет смысла. Правда в современном языке можно без них обойтись, точнее без их видимого использования, но для этого нужно иметь весьма неплохую квалификацию и опыт и главное понимание.
Простые программки можно и без указателей писать, будет похоже на C#, местами не оптимально, местами чудовищно не оптимально. Хотя есть применять магический значок ссылка, просто как элемент "так надо" то будет чуть получше.