Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Sluchayno
30 / 30 / 20
Регистрация: 22.09.2013
Сообщений: 312
1

Указатели на слонов или А зачем нужны указатели?

03.12.2015, 17:59. Просмотров 1030. Ответов 10
Метки нет (Все метки)

Знаю что таких вопросов было уйма, но я так и не нашел ответа на свой вопрос.
Для чего нужны указатели? Что такое указатели я знаю, это переменная которая хранит в себе адрес в памяти. int *p.
Я не понимаю для чего это нужно? Зачем нам адрес в памяти если мы можем просто взять перемену и записать в нее какое то значение? Можно пример где без указателя, ну просто не обойтись? Или пример где лучше использовать указатель чем просто переменную?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2015, 17:59
Ответы с готовыми решениями:

Зачем нужны указатели
Не могу понять синтаксис указателей. Понял, что это работа с адресами, что...

Зачем нужны указатели?
Интересует вопрос, зачем нужны указатели? Например почему лучше нужно...

Зачем нужны многоуровневые указатели
вопрос в названии темы

Зачем здесь нужны указатели
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье....

Не могу понять зачем нужны указатели?
Не как не могу понять зачем нужны указатели. Я знаю что их надо использовать...

10
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
03.12.2015, 18:23 2
C++
1
2
3
4
5
6
7
8
9
10
void setvalue(int* x)
{
    *x=1;
}
int main()
{
    int k=0;
    setvalue(&k);
    cout<<k;
}
0
Даценд
Модератор
Эксперт .NET
4284 / 4016 / 2660
Регистрация: 20.04.2015
Сообщений: 7,304
03.12.2015, 18:24 3
Цитата Сообщение от Sluchayno Посмотреть сообщение
Зачем нам адрес в памяти если мы можем просто взять перемену и записать в нее какое то значение?
1) функции, которые должны возвращать несколько значений могут сделать это только при передаче переменных по адресу
2) При передаче массива в функцию передается только адрес массива, при этом не происходит копирование всего массива
3) Передача функции в функцию через указатель
0
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
03.12.2015, 18:26 4
Лучший ответ Сообщение было отмечено Sluchayno как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct A
{
   virtual void f(){cout<<"A";}
};
struct B:public A
{
   virtual void f(){cout<<"B";}
};
int main()
{
   A* pa;
   A a;
   B b;
   pa=&a;
   pa->f(); // вывод А
   pa=&b;
   pa->f();  // вывод В
}
1
Sluchayno
30 / 30 / 20
Регистрация: 22.09.2013
Сообщений: 312
03.12.2015, 18:51  [ТС] 5
Спасибо, стало более понятнее.
0
gogaloh
16 / 22 / 0
Регистрация: 14.03.2015
Сообщений: 628
03.12.2015, 20:10 6
zss, у Вас добрые глаза, все работает, но где найти обьяснения, всего этого для таких как я
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
03.12.2015, 20:29 7
gogaloh, бывают переменные, здоровые как слон ( Занимают много памяти). Вот, чтобы не таскать слона по функциям, можно показать где слон и что с ним надо сделать (оседлать, накормить).

Не по теме:

Там выше неаккуратное высскахывание о возврате

0
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
03.12.2015, 20:30 8
Цитата Сообщение от gogaloh Посмотреть сообщение
где найти обьяснения
Читать, что такое классы, наследование и виртуальные функции.
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
03.12.2015, 20:33 9
Где не обойтись? Создать обычный массив во время выполнения программы, указывая ему его размер во время выполнения этой самой программы.
0
gogaloh
16 / 22 / 0
Регистрация: 14.03.2015
Сообщений: 628
03.12.2015, 21:04 10
Такую аллегорию я даже, если очень захочу не смогу забыть, и не один я буду еще Вас благодарить.
daslex, спаси тебя Боже.

Добавлено через 20 минут
zss,
void setvalue(int* x) // Создаем функцию, которая будет работать с адресом
*x=1; // по какому-то адресу размещаем 1
setvalue(&k) // Вызываем функцию и помещаем в нее адрес переменной
Все ли я правильно понял?
0
zss
Модератор
Эксперт С++
7479 / 6847 / 4325
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
03.12.2015, 21:37 11
Цитата Сообщение от gogaloh Посмотреть сообщение
Все ли я правильно понял?
Да, правильно
0
03.12.2015, 21:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2015, 21:37

Объясните, пожалуйста, зачем в C++ нужны указатели
Никак что-то не пойму, зачем в C++ указатели? Ведь можно спокойно...

Для чего нужны и зачем использовать smart-указатели?
В Страуструпе не нашел, кто подскжает где можно про них прочитать ?)

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru