Другие языки программирования и технологии
Когда стоит использовать указатели c++
Начал читать Шилдта, он везде говорит, что профессионалы очень часто используют указатели. И приводит примеры, в которых простой перебор массива с помощью цикла, производится через указатели. Насколько часто подобное используется в реальности? Стоит ли всегда использовать указатели или это приводится только в качестве примера и использовать их стоит только при определенных условиях?
Виктор К уже, в принципе, все сказал. ООП строится на указателях; если нужно что-то изменить вне функции, то это лучше передавать в функцию по указателю; сложные структуры (массивы и т. д.) в функции лучше передавать по указателю (хотя в C++ есть еще ссылки, которые, по сути, те же указатели, но проще записываются).
Относительно перебора массивов - как ни странно, это уже не имеет значения. На PDP-7, под которую проектировали язык C, этот способ работы с массивами был действительно быстрее, но на современных компьютерах процессоры поддерживают индексацию. И вообще в C++11 и выше есть for(:) для перебора элементов.
Относительно перебора массивов - как ни странно, это уже не имеет значения. На PDP-7, под которую проектировали язык C, этот способ работы с массивами был действительно быстрее, но на современных компьютерах процессоры поддерживают индексацию. И вообще в C++11 и выше есть for(:) для перебора элементов.
сарказм on
Указатели необходимо использовать ВСЕГДА!
пример
2*2=?
int *a, *b;
a=new int;
b=new int;
*a=2;
*b=2;
std::cout<< (*a * *b);
delete a;
delete b;
очевидно, что данная программа гораздо понятнее, чем
std::cout<< 2*2;
сарказм off
Указатели необходимо использовать ВСЕГДА!
пример
2*2=?
int *a, *b;
a=new int;
b=new int;
*a=2;
*b=2;
std::cout<< (*a * *b);
delete a;
delete b;
очевидно, что данная программа гораздо понятнее, чем
std::cout<< 2*2;
сарказм off
Указатели обычно используются при передачи переменных в функцию.
Без использования указателей при передачи переменной в функцию- внутри функции создается ее локальная копия, что увеличивает потребляемые приложением ресурсы. Передавая же переменную по указателю, вы будете работать именно без создания локальной копии. То есть передав указатель на переменную переменную из основного тела программы и изменив ее значение - в основном теле программы значение тоже изменится. Но если это и требуется от функции, или если внутри функции не изменяется значение переменной - передача по указателю предпочтительна.
Стоит так же отметить, что массивы в функцию (особенно динамические) передаются только по указателю. Переменная- массив, кстати, содержит именно указатель на первый элемент.
Без использования указателей при передачи переменной в функцию- внутри функции создается ее локальная копия, что увеличивает потребляемые приложением ресурсы. Передавая же переменную по указателю, вы будете работать именно без создания локальной копии. То есть передав указатель на переменную переменную из основного тела программы и изменив ее значение - в основном теле программы значение тоже изменится. Но если это и требуется от функции, или если внутри функции не изменяется значение переменной - передача по указателю предпочтительна.
Стоит так же отметить, что массивы в функцию (особенно динамические) передаются только по указателю. Переменная- массив, кстати, содержит именно указатель на первый элемент.
Похожие вопросы
- да зачем нужны эти указатели ?? C++. Зачем нужны указатели? почему не обойтись без простой переменной??
- нужна помощь с указателями!надо написать этот програмный код,используя указатели(
- Какой язык стоит изучать первым C++ или C#?
- Помогите с решением вопроса (указатели C++)
- Вывести в консоль полые геометрические фигуры используя язык C и библиотеку stdio.h .
- Подскажите стоящий учебник по C++
- Что стоит изучать перед c++ и есть ли что-нибудь круче него?
- Чем отличается язык программирования С# от С++. И стоит ли изучать C#. Или лучше С, С++
- Как разыменовать указатель в C++
- Зачем в С/C++ создан отдельный тип "указатель"