Загрузка...

Когда нужно(уместно) использовать указатели в C++????

Тема в разделе C/C++ создана пользователем KAUF_EN 10 июн 2023. 332 просмотра

  1. KAUF_EN
    KAUF_EN Автор темы 10 июн 2023 0 21 апр 2022
    Когда нужно(уместно) использовать указатели в C++????
     
  2. ChatGPT
    ChatGPT 10 июн 2023 2250 14 мар 2023
    KAUF_EN, указатели в C++ используются для работы с динамической памятью, передачи аргументов в функции по ссылке, создания и работы с динамическими структурами данных, такими как связанные списки, деревья и графы. Они также могут использоваться для управления ресурсами, такими как файлы и сетевые соединения. Кроме того, указатели могут быть полезны для оптимизации производительности, так как работа с указателями может быть более эффективной, чем работа с копиями данных. Однако, необходимо быть осторожным при использовании указателей, так как неправильное использование может привести к ошибкам в работе программы, таким как утечки памяти и сбои в работе программы.
     
  3. Plain
    Plain 10 июн 2023 Policeman swear to God 759 28 авг 2022
    в основном это массивы, динамическая память, работа с функциями
     
    1. LVV
      Plain, массивы это самое худшее для использования поинтеров, а функции (чего?) не понял, принимать как аргумент указатель? в каком месте используются в функциях
    2. Plain
      LVV, не знаю какой опыт у тебя в плюсах, по скольку плюсы это очень многофункциональный язык и по задачам которые мне приходилось решать я сделал заключение.
    3. LVV
      Plain, ни одного аргумента не услышал, но объясню:
      массивы худший пример для указателей, потому смена a[n] на *(a+n) не сильно раскрывает смысл поинтера.
      а то что функция. я слышал про объявление функции как указателей (могу ошибаться), но это такая далёкая тема, что ее попросту многие не знают. а пэссить значение массива который задан как а[n] в функции: void func (int *a) ну, а что поменялось?

      имеет смысл использовать для связных списков (очень даже раскрывается тема указателей. в особенности удаление и добавление элементов (за единицу)
    4. Посмотреть следующие комментарии (5)
  4. LVV
    почти во всех структурах данных (стэк, очередь, листы и прочее через классы) и все что через выделение памяти
     
    10 июн 2023 Изменено
    1. Посмотреть предыдущие комментарии (11)
    2. Daemon
      LVV, Есть такое высказывание:
      "Если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка"
    3. Daemon
      LVV,
      Частные случаи списка, где добавление/удаление ограничено.
    4. Daemon
      LVV,
      Я понял, что вы говорите про реализации на основе дискретных узлов, связанных указателями (тема ведь про них). Хотел просто дополнить, что указатели там не обязательны, но конечно для приемлемой скорости лучше использовать их (либо гибрид - список массивов).
      А вот без этого разумеется никак, даже если делать на основе массива, придется делать его динамическим, так что указатели нужны и в случае с массивом (только если нужен список неопределенного размера или в задаче слишком большой разброс по возможному размеру списка).
      Ну тут изначально я сам не совсем правильно выразился, извиняюсь. Вот так следовало мне сказать: "Дополню: список можно сделать как на основе связанных между собой узлов, так и при помощи массива, но в обоих случаях без указателей не обойтись".
  5. Daemon
    Daemon 10 июн 2023 1680 8 янв 2021
    Указатель это один из видов переменных, который может хранить:
    [IMG]
    Через указатель можно работать с тем, на что он указывает: вызвать функцию (или передать как аргумент в другую), вызвать метод у объекта.
     
    10 июн 2023 Изменено
    1. Daemon
      Например оператор new (и new[]), которые предназначены для выделения памяти в процессе работы программы, возвращают указатель на выделенную память.
  6. vtlstolyarov
    vtlstolyarov 11 июн 2023 468 8 янв 2022
    Я не спец по плюсам, но разве указатели не используются для всего что создаётся на куче а не на стэке? и плюс к этому используются тогда когда не хочется копировать со стэка на стэк и передаётся указатель вместо копирования всей структуры?
     
    1. Daemon
      vtlstolyarov, да, это пожалуй самое частое использование
Загрузка...
Top