KAUF_EN, указатели в C++ используются для работы с динамической памятью, передачи аргументов в функции по ссылке, создания и работы с динамическими структурами данных, такими как связанные списки, деревья и графы. Они также могут использоваться для управления ресурсами, такими как файлы и сетевые соединения. Кроме того, указатели могут быть полезны для оптимизации производительности, так как работа с указателями может быть более эффективной, чем работа с копиями данных. Однако, необходимо быть осторожным при использовании указателей, так как неправильное использование может привести к ошибкам в работе программы, таким как утечки памяти и сбои в работе программы.
LVV, не знаю какой опыт у тебя в плюсах, по скольку плюсы это очень многофункциональный язык и по задачам которые мне приходилось решать я сделал заключение.
Plain, ни одного аргумента не услышал, но объясню: массивы худший пример для указателей, потому смена a[n] на *(a+n) не сильно раскрывает смысл поинтера. а то что функция. я слышал про объявление функции как указателей (могу ошибаться), но это такая далёкая тема, что ее попросту многие не знают. а пэссить значение массива который задан как а[n] в функции: void func (int *a) ну, а что поменялось? имеет смысл использовать для связных списков (очень даже раскрывается тема указателей. в особенности удаление и добавление элементов (за единицу)
LVV, со списком соглашусь, по поводу функций, часто использовал указатель на другую функцию. По массивам, 1 элемент массива и есть указателем на сам массив, да и в принципе при работе с массивами часто использовал указатели.
почти во всех структурах данных (стэк, очередь, листы и прочее через классы) и все что через выделение памяти
LVV, Есть такое высказывание: "Если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка"
LVV, Я понял, что вы говорите про реализации на основе дискретных узлов, связанных указателями (тема ведь про них). Хотел просто дополнить, что указатели там не обязательны, но конечно для приемлемой скорости лучше использовать их (либо гибрид - список массивов). А вот без этого разумеется никак, даже если делать на основе массива, придется делать его динамическим, так что указатели нужны и в случае с массивом (только если нужен список неопределенного размера или в задаче слишком большой разброс по возможному размеру списка). Ну тут изначально я сам не совсем правильно выразился, извиняюсь. Вот так следовало мне сказать: "Дополню: список можно сделать как на основе связанных между собой узлов, так и при помощи массива, но в обоих случаях без указателей не обойтись".
Указатель это один из видов переменных, который может хранить: Через указатель можно работать с тем, на что он указывает: вызвать функцию (или передать как аргумент в другую), вызвать метод у объекта.
Например оператор new (и new[]), которые предназначены для выделения памяти в процессе работы программы, возвращают указатель на выделенную память.
Я не спец по плюсам, но разве указатели не используются для всего что создаётся на куче а не на стэке? и плюс к этому используются тогда когда не хочется копировать со стэка на стэк и передаётся указатель вместо копирования всей структуры?