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

Понимание для чего вообще нужны указатели? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблема с pow http://www.cyberforum.ru/cpp-beginners/thread382561.html
#include <iostream> #include <conio.h> #include <math.h> using namespace std; class Triangle { public: int a,b,c;
C++ Считать массив строк из файла Например есть файл in.txt, с него нужно считать массив строк в мемо, а в другом мемо записать эти же строки в ascii кодах, например: в файле: abc bcd def в первом мемо должно отобразиться то же... http://www.cyberforum.ru/cpp-beginners/thread382557.html
глобал в библиотеке, не отображается в дебагере C++
Использую студию 2010, профешинал. Есть в статик библиотеке глобальная переменная, внутри этой библиотеке в дебагере ее поля вопросиками показываются, а хотя извлекается оттуда все нормально. Но...
C++ Очередь, С++
здраствуейте, помогите реализовать алгортитм :pardon: С++ , буду признателен =) Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда...
C++ Табуляция http://www.cyberforum.ru/cpp-beginners/thread382529.html
ПРивет всем передо мной стоит следующая задачка: Требуется вычислить значения yi заданной функции для ряда значений аргументов xi, i=1,…,N, при этом вычис-лив с точностью ε > 0 значения функций ряда...
C++ Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на ... Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на 2 и 4, но не делятся на 6. Записать эти числа в текстовый файл g, а все остальные числа – в... подробнее

Показать сообщение отдельно
Bers
Заблокирован
12.11.2011, 21:46
Цитата Сообщение от Диман56 Посмотреть сообщение
Сейчас будет чистый мой тупняк. Слабонервным дальше не читать. Итак, для чего вообще нужны указатели? Я вот не пойму, зачем их надо было вообще придумывать??? Не понимаю их конкретной пользы, смысла. Кто-нибудь может по-человечески объяснить?
Ну смотри, например, ты хочешь попросить систему выделить тебе памяти под массив.

Ты говоришь: "Система! Дай мне мегабайт памяти!"
А она тебе отвечает: "Да не вопрос, бери! "

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

Она тебе говорит: "Вот ты просил у меня мегабайт памяти, вот я тебе нашла нужный кусок. Вот его адресс - бери и пользуйся".

С точки зрения высокоуровневого программиста на с++, указатель - это самая обычная переменная, задача которой хранить адрес.

И когда ты делаешь например так:

C++
1
2
3
int* ptr = new int [100]; //Система, дай мне кусок памяти, 
                                    //в котором можно поместить 100 штук 
                                    //переменных типа int
Она возвращает тебе адрес. Хорошо, адрес у тебя есть.
Но тебе же нужно не просто знать адрес памяти, который у тебя теперь есть.
Тебе ещё нужно как то получить доступ к этой памяти.

По сути на руках у тебя есть только указатель на кусок памяти. Но у самого этого куска памяти имени нет. Этот кусок памяти - это не переменная, это просто кусок памяти и все!

Теперь смотри дальше. Допустим, у тебя есть собственно ручно написанный класс.
Допустим... CColobok

Когда ты говоришь системе:

C++
1
CColobok* ptr = new CColobok(); //Система тебе память выделила
Память то ты получил. И колобка там своего тоже поместил.
Но тебе же нужен не просто кусок памяти. Тебе нужно получить доступ к самому колобку!

Адрес то колобка у тебя есть. У тебя нету имени этого колобка. Понимаешь? Колобок есть, а имени нету.

Однако, твой указатель имеет тип. И тип данных указателя подскажет компилятору, на что именно он указывает.

Таким образом значение указателя - это где живет колобок. А тип указателя - это что кусок памяти действительно является колобком.

Вот и получается, что указатель позволяет программисту работать с объектами, не зная их имен.
И работать не с переменными, а напрямую с памятью.
8
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru