Другие языки программирования и технологии
Не понимаю указатели в C++
Не могу понять для чего нужны указатели ?
В Си не было такого явления как ссылки. Поэтому единственным способом изменить переданный в функцию аргумент было передать его адрес - то бишь указатель.
Пример когда
void foo(int a) {
a = 10;
}
void bar(int * a) {
*a = 10;
}
int main() {
int a = 0;
foo(a); // функция принимает аргумент по значению. Поэтому в функции foo будет меняться локальная копия.
std::cout << a << std::endl; // выведет 0
bar(&a); // передаем адрес и меняем в функции значение по адресу
std::cout << a << std::endl; // выведет 10
}
Также указатели используются для хранения адресов, по которым была выделена динамическая память (new или malloc).
Пример когда
void foo(int a) {
a = 10;
}
void bar(int * a) {
*a = 10;
}
int main() {
int a = 0;
foo(a); // функция принимает аргумент по значению. Поэтому в функции foo будет меняться локальная копия.
std::cout << a << std::endl; // выведет 0
bar(&a); // передаем адрес и меняем в функции значение по адресу
std::cout << a << std::endl; // выведет 10
}
Также указатели используются для хранения адресов, по которым была выделена динамическая память (new или malloc).
Для хранения адреса объекта в памяти и доступа к объекту по адресу в памяти.
Не печальтесь: скоро (в новых версиях) в С++ избавятся от этого безобразия. Даже для тех, кто понимает, это мощный и неистощимый источник ошибок.
Да они там особо и не нужны. Наоборот стараются без них по возможности. Новичку можно год и больше проработать в проекте, так и не поимев дел с указателями.
Ответ простой. Не надо - не пользуйся. Надо прежде всего понять, что это такое, а не для чего оно нужно. Когда понадобится, тогда применишь.
Чтоб понять указатели, лучше изучать Си, а не C++. На C++ можно писать без указателей. На Си это невозможно. На C++ указатели часто скрыты в классах, что создаёт иллюзию, будто они не используются.
Чтоб понять указатели, лучше изучать Си, а не C++. На C++ можно писать без указателей. На Си это невозможно. На C++ указатели часто скрыты в классах, что создаёт иллюзию, будто они не используются.
ну.... это как если бы тебе напрямую дали чемодан, а в другом случае - только бумажку с адресом камеры хранения...
Чтобы отчищать память своевременно
Похожие вопросы
- Как разыменовать указатель в C++
- Зачем нужны указатели в c++? начал изучать язык C++ и не очень понимаю зачем нужны указатели?
- Зачем вообще указатели в C++?
- Массив указателей в C++
- Для чего нужны указатели в c ?
- Зачем нужны указатели в c++? Нельзя ли обычными переменными пользоваться?
- Как работают указатели в c++
- Зачем в С/C++ создан отдельный тип "указатель"
- Когда стоит использовать указатели c++
- C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся