Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Николай12
 Аватар для Николай12
-7 / 15 / 0
Регистрация: 13.05.2012
Сообщений: 169
22.03.2013, 12:51     Объясните, пожалуйста, зачем в C++ нужны указатели #1
Никак что-то не пойму, зачем в C++ указатели? Ведь можно спокойно программировать без них.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 12:51     Объясните, пожалуйста, зачем в C++ нужны указатели
Посмотрите здесь:

C++ Не могу понять зачем нужны указатели?
C++ Зачем здесь нужны указатели
C++ Объясните пожалуйста, как работает код. Указатели
Объясните зачем нужны конструкторы C++
зачем нужны многоуровневые указатели C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CollSpack
 Аватар для CollSpack
7 / 7 / 0
Регистрация: 21.01.2013
Сообщений: 55
22.03.2013, 12:59     Объясните, пожалуйста, зачем в C++ нужны указатели #2
К примеру без указателей нельзя сделать динамически расширяющийся массив.
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
22.03.2013, 13:06     Объясните, пожалуйста, зачем в C++ нужны указатели #3
Цитата Сообщение от CollSpack Посмотреть сообщение
К примеру без указателей нельзя сделать динамически расширяющийся массив.
вместо динамического массива можно использовать вектор

Цитата Сообщение от Николай12 Посмотреть сообщение
Никак что-то не пойму, зачем в C++ указатели? Ведь можно спокойно программировать без них.
попробуй внутри функции создать объекты, чтобы по выходу из функции они остались живы))
к тому же во многих случаях передавая в функцию объекты лучше избегать их копирования передавая их по сслыке/указателю
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
22.03.2013, 13:12     Объясните, пожалуйста, зачем в C++ нужны указатели #4
Цитата Сообщение от igor001 Посмотреть сообщение
вместо динамического массива можно использовать вектор
а как по-твоему вектор работает? Это тоже класс, хранящий указатель на массив.
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
22.03.2013, 13:16     Объясните, пожалуйста, зачем в C++ нужны указатели #5
точно, сорь, тупанул)))
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
22.03.2013, 13:17     Объясните, пожалуйста, зачем в C++ нужны указатели #6
По сути указатели предоставляют возможность обращаться к ЛЮБОЙ ячейке памяти компьютера.

Не по теме:

Да, результатом такого необдуманного обращения может быть сегфолт или что-то ещё непредсказуемое, но это отдельная тема. А суть вот.

CollSpack
 Аватар для CollSpack
7 / 7 / 0
Регистрация: 21.01.2013
Сообщений: 55
22.03.2013, 13:28     Объясните, пожалуйста, зачем в C++ нужны указатели #7
Указатель еще нужен для того, чтобы изменять переменные из-под функции:

C++
1
2
3
4
5
6
7
8
9
10
11
void foo(int *p)
{
  *p+=5;
}
 
main()
{
  int i=0;
  foo(&i);
  cout<<i; //выведет 5
}
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
22.03.2013, 13:40     Объясните, пожалуйста, зачем в C++ нужны указатели #8
пример: функция принимает указатель на базовый класс, и ты можешь ей передать указатель на потомка, работать будет - без этого в ООП не обойтись
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
22.03.2013, 14:27     Объясните, пожалуйста, зачем в C++ нужны указатели #9
Цитата Сообщение от CollSpack Посмотреть сообщение
Указатель еще нужен для того, чтобы изменять переменные из-под функции:

C++
1
2
3
4
5
6
7
8
9
10
11
void foo(int *p)
{
  *p+=5;
}
 
main()
{
  int i=0;
  foo(&i);
  cout<<i; //выведет 5
}

можно, но лучше по ссылке
C++
1
2
3
4
5
6
7
8
9
10
11
void foo(int &p)
{
  p += 5;
}
 
main()
{
  int i=0;
  foo(i);
  cout<<i; //выведет 5
}
только вот если ты передашь в функцию указатель на уже несуществующий элемент то получишь непредсказуемый результат, а если передавать ссылку, такого не произойдет (точно не помню, но скорее всего выдаст ошибку, а их можно пепехватывать)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
22.03.2013, 15:09     Объясните, пожалуйста, зачем в C++ нужны указатели #10
Цитата Сообщение от igor001 Посмотреть сообщение
попробуй внутри функции создать объекты, чтобы по выходу из функции они остались живы))
Выдавать наружу - не очень хорошая идея.
Цитата Сообщение от igor001 Посмотреть сообщение
можно, но лучше по ссылке
Ссылка - это всего лишь обертка над указателем, так что передается все равно указатель.

Добавлено через 3 минуты
Цитата Сообщение от Николай12 Посмотреть сообщение
Никак что-то не пойму, зачем в C++ указатели? Ведь можно спокойно программировать без них.
Например, для полиморфизма, передачи/возврата значений из функции, для индексации в массивах, для создания динамических структур(списки, деревья и т.д.).
В общем чем дальше будете изучать язык, тем больше будет им применения
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.03.2013, 15:27     Объясните, пожалуйста, зачем в C++ нужны указатели #11
Низачем. Не нужны, пока не научитесь с ними обращаться или хотя бы не почитаете книжку, которая это объясняет, вместо того, чтобы задавать странные вопросы. Так же пользуйтесь поиском, обсуждалось не раз.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 15:32     Объясните, пожалуйста, зачем в C++ нужны указатели
Еще ссылки по теме:

C++ Зачем нужны указатели?
C++ Зачем присваивать переменной disc ноль? Объясните пожалуйста
C++ Для чего нужны и зачем использовать smart-указатели?

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

Или воспользуйтесь поиском по форуму:
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
22.03.2013, 15:32     Объясните, пожалуйста, зачем в C++ нужны указатели #12
ссылка хоть и обертка над указателем, но все же это уже не указатель, некоторые ошибки, которые легко можно допустить при работе с указателями со ссылкой не прокатят. А на счет выдавать наружу... у меня в программе необходимо было создавать stringgrid динамически и не один, я их в функции создавал и хранил указатели на них в map, как по мне не такая уж и плохая идея. Конечно по началу я хотел в map класть сами объекты, но потом появилась необходимость создать map<UnicodeString,map<UnicodeString, StringGrid>> и я поимел excess violation, после чего стал хранить map<UnicodeString,map<UnicodeString, StringGrid*>> и все норм работает
Yandex
Объявления
22.03.2013, 15:32     Объясните, пожалуйста, зачем в C++ нужны указатели
Ответ Создать тему
Опции темы

Текущее время: 00:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru