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

Переменные в c++ - C++

Восстановить пароль Регистрация
 
Kristinochka
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 3
04.02.2013, 19:32     Переменные в c++ #1
Помогите разобраться в теории. Так вот допустим мы создаем переменную в стеке
C++
1
int a;
тогда в стеке где то по адресу скажем 004 выделяется 4 байта в которые записывается переменная в двоичном коде.
Фррр а вот теперь вопрос а где храниться сам адрес 004 , откуда программа знает что переменная храниться в этом адресе? она что где то его сохраняет ?а если мы где то храним адрес то как мы узнаем где мы его храним? а размер переменной где храниться????
И вот еще вопрос , допустим берем
C++
1
2
3
4
5
class uf
{
int a;
int b;
}
как компилятор знает что класс состоит из двух переменных ведь в оперативной памяти просто сохраняется размер и начало ?или как?
Если непонятно пишу вы горите я обещаю исправить!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Troll_Face
 Аватар для Troll_Face
599 / 399 / 4
Регистрация: 26.04.2012
Сообщений: 2,070
04.02.2013, 19:46     Переменные в c++ #2
Цитата Сообщение от Kristinochka Посмотреть сообщение
тогда в стеке где то по адресу скажем 004 выделяется 4 байта в которые записывается переменная в двоичном коде.
не обязательно в стеке. компилятор знает где он создает память для переменных и подставляет их адреса, т.е. не "мы" знаем адреса, а компилятор.
Цитата Сообщение от Kristinochka Посмотреть сообщение
как компилятор знает что класс состоит из двух переменных ведь в оперативной памяти просто сохраняется размер и начало ?или как?
компилятор знает и адрес начала и адрес конца и сколько переменных и какие они и т.д. обо всем этом заботится компилятор

Добавлено через 54 секунды
знаешь что такое отладчик? типа олли дебагера? вот можешь открыть любую прогу в нем, там только адреса, т.е. они не беруться от куда-нибудь, а сразу стоят в коде
Kristinochka
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 3
04.02.2013, 19:50  [ТС]     Переменные в c++ #3
Я еще больше запуталась !!! но ведь операционная система сама выбирает адреса в процессе работы? разве нет?
HardLogin
 Аватар для HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 643
Записей в блоге: 1
04.02.2013, 19:59     Переменные в c++ #4
а не легче забить это работа компилира а не наша
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
04.02.2013, 19:59     Переменные в c++ #5
Если мы говорим о стеке, то эти адреса отсчитываются как смещение от начала стека, которое было на момент запуска функции. Хотя само начало может быть разным в разных случаях, но сами смещения постоянны.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.02.2013, 20:05     Переменные в c++ #6
http://habrahabr.ru/post/128991/
HardLogin
 Аватар для HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 643
Записей в блоге: 1
04.02.2013, 20:08     Переменные в c++ #7
Цитата Сообщение от Nick Alte Посмотреть сообщение
Если мы говорим о стеке, то эти адреса отсчитываются как смещение от начала стека, которое было на момент запуска функции. Хотя само начало может быть разным в разных случаях, но сами смещения постоянны.
мой мозг!
Troll_Face
 Аватар для Troll_Face
599 / 399 / 4
Регистрация: 26.04.2012
Сообщений: 2,070
04.02.2013, 20:16     Переменные в c++ #8
HardLogin, вобщем не вдумывайся в следующую фразу, просто прими как она есть: все смещение в коде даются относительными. т.е. куда бы мы не зугрузили нашу прогу (хоть в нулевой адрес, хоть в 100500-й, смещения будут относительно этого адреса). вот пример: смещение переменной в коде 1000h, загружена прога по адресу 5000000h, тогда "физический" адрес переменной будет 5001000h

Добавлено через 2 минуты
HardLogin, вы с ассемблером не знакомы? хоть чуть-чуть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2013, 20:24     Переменные в c++
Еще ссылки по теме:

Переменные C++
C++ переменные в C++
C++ Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения

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

Или воспользуйтесь поиском по форуму:
Kristinochka
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 3
04.02.2013, 20:24  [ТС]     Переменные в c++ #9
более менее поняла , спасибо большое!
Yandex
Объявления
04.02.2013, 20:24     Переменные в c++
Ответ Создать тему
Опции темы

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