|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.10.2011, 11:56 | #1 |
Пользователь
Регистрация: 09.08.2010
Сообщений: 48
|
Указатели в Delphi и С++ - суть
При переезде с Делфи на Си что-то запутался, помогите уложить все в голове. Как я сейчас себе это представляю:
Указатель, грубо говоря, нужен для прямого обращения к ячейкам памяти. Через new мы выделяем под указатель память в зависимости от типа данных. Происходит ли автоматическое выделение памяти под указатели? Далее, что такое nil/NULL ? Значение указателя, под который не выделена память? Имеет ли смысл запись new(A); A=nil; ? dispose/delete - опустошение выделенной под указатель памяти и уничожение ссылки на нее. После этого имеет ли указатель значение nil/NULL ? Передача указателя в функцию - в Delphi можно описать procedure DoSomething ( var A:Pointer ); и изменения значения указателя по ходу выполнения будут перманентны. Как описывается аналогичная ситуация в Си? Извиняюсь, если вопросы уж очень глупые, просто хочется получить фундаментальное представление о механизме) |
23.10.2011, 12:45 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
WarHamster
Происходит ли автоматическое выделение памяти под указатели? Да. Указатель, как и любая другая переменная может быть размещен на стеке, в секции глобальных или константных данных. Далее, что такое nil/NULL ? этот Пустота (Ж Значение указателя, под который не выделена память? Случайные данные из оперативной памяти процесса. Имеет ли смысл запись new(A); A=nil; ? Смысл записи не ясен. dispose/delete - опустошение выделенной под указатель памяти и уничожение ссылки на нее. В Cи/C++ нет сборщика мусора, и, соответственно, ссылок на неиспользуемые объекты. После этого имеет ли указатель значение nil/NULL ? Значение указателя не измениться, только станет недействительным. Передача указателя в функцию - в Delphi можно описать procedure DoSomething ( var A:Pointer ); и изменения значения указателя по ходу выполнения будут перманентны. Как описывается аналогичная ситуация в Си? В Си - передача указателя на указатель: Код:
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
23.10.2011, 12:47 | #3 | ||
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Цитата:
Цитата:
Под сами указатели - да, под то на что они указывают - нет. 0 Указатель, который ссылается на нулевой адрес. Нет. Нет. |
||
23.10.2011, 12:48 | #4 | |||||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
I'm learning to live...
|
|||||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объясните суть кода(терминал в С) | SlayerLiving | Общие вопросы C/C++ | 1 | 12.03.2011 17:16 |
delphi. указатели. | grustniy | Помощь студентам | 1 | 05.10.2010 22:58 |
Редактирование строки. Суть внутри. | skeletor | PHP | 2 | 06.07.2010 15:31 |
Суть проблемы такова | cheache | Свободное общение | 6 | 03.05.2010 13:32 |
Поясните суть кода на delphi. физический маятник | бедный_студент | Помощь студентам | 2 | 26.04.2010 19:55 |