|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2012, 23:36 | #1 |
Регистрация: 08.01.2012
Сообщений: 5
|
Переменные, ссылки и указатели. Правильно ли я их понимаю?
Здраствуйте. Сейчас будет небольшой поток мыслей - мои рассуждения. Я начинающий в изучении с++ и только школьник. Поэтому пожалуйста объясняйте мне что я дятел не очень грубо.
Правильно ли я понимаю, что переменная - это упрощённый указатель. Тоесть указатель можно направлять на другую ячейку памяти - а переменную нельзя. С указателем можно делать всё то же что и с переменной, однако память выделенную под указатели можно вручную удалять, а не как в переменной - когда она выйдет из своей области видимости(или как то так). С ссылками вроде все понятно, тот же указатель, но с упрощённым раз@#!именованием. Теперь по сути вопросы: 1)правильно ли всё это? 2)"однако память выделенную под указатели можно вручную удалять, а не как в переменной - когда она выйдет из своей области видимости(или как то так)" - Или под указатели выделяется другая память? 3) И можно ли удалять указатель, который мы не создавали оператором new(), а который указали способом вроде int *pa = a; 4)Вообщем у меня путанница с технической стороной того, что происходит в компе когда мы объявляем переменную или создаём указатель, там какая-то статическая и динамическая память. Объясните это подробно но "на пальцах". ЗАРАНЕЕ СПАСИБО ОГРОМНОЕ!!! |
11.01.2012, 01:28 | #2 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Просто переменная, скажем к примеру int Var = 0; это не упрощенный указатель, это автоматически выделенная стеком область памяти, где освобождением этой памяти занимается тот же стек.
Указатель, скажем к пример int *pVar = new int [10]; это динамическое в моем случае выделенная последовательность байт (быть точнее последовательность двойного слова) и освобождением этой памяти мы должны заниматься в ручную. То есть после того как данный динамический массив был использован соответственно память должна быть освобождена. delete [] pVar; п.с./ Почему двойное слово? Потому что, тип int занимает в памяти 4 байта. (DWORD) Память представляется следующими типами данных: BYTE, WORD, DWORD BYTE = 8 бит WORD = 16 бит DWORD = 32 бит Я скажем так, программист любитель, поэтому могу и ошибаться. На счет ссылок это уклон уже в ООП. Взято на Вики, ссылка — это простой ссылочный тип, менее мощный, но более безопасный, чем указатель, унаследованый от языка Си. Несколько примеров с ссылками: int A = 5; int& rA = A; extern int& rB; int& foo (); void bar (int& rP); class MyClass { int& m_b; /* ... */ }; int funcX() { return 42 ; }; int (&xFunc)() = funcX; А вообще я примерно догадываюсь что ты не понимаешь и в чем твоя проблема, так как когда-то имел такую же проблему. Давай представим что у нас есть массив и указатель на массив. Код:
Последний раз редактировалось coNsept; 11.01.2012 в 01:53. |
11.01.2012, 01:44 | #3 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2coNsept
Код:
Код:
Код:
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
11.01.2012, 01:58 | #4 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Мистер proger веселей, с ним все гораздо быстрей
Oops, да простите, писал в printf а думал о scanf и за остальные исправления сэнкс. &Arr[0] - собственно это безусловно звучит правильнее указатель на массив интов из трех элементов. Ну а разве передачей адреса массива это нельзя назвать? (Как бэ по проще) |
11.01.2012, 02:04 | #5 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2coNsept
Цитата:
Код:
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
указатели vs ссылки | Aistn | Общие вопросы C/C++ | 9 | 01.06.2011 23:02 |
Динамические переменные и указатели | DjedayD | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 03.05.2011 09:16 |
ссылки и указатели. | mojohead | Помощь студентам | 13 | 14.01.2011 16:00 |
Указатели и переменные в функциях. | Alexcomeback | Общие вопросы C/C++ | 6 | 28.09.2009 20:11 |
Правильно ли я понимаю справку Ексель? Помогите! | abdumanon | Microsoft Office Excel | 9 | 09.04.2009 19:36 |