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

Переменные в статической и динамической памяти! - C++

Восстановить пароль Регистрация
 
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 17:09     Переменные в статической и динамической памяти! #1
Народ, подскажите как этот рисунок перевести в программу! тоесть как с помощью программы разместить таким образом переменные в памяти
Переменные в статической и динамической памяти!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
03.02.2014, 17:25     Переменные в статической и динамической памяти! #2
yurets17, а прокомментировать можете? Что за структуры такие, что значат стрелки? что значат просто черточки
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 17:30  [ТС]     Переменные в статической и динамической памяти! #3
В статической памяти обьявлены 2 переменные! стрелочки и черточки это типа указатели! а в динамической памяти, я так думаю, что это массивы

Добавлено через 1 минуту
вот что-то подобное, но это скорее всего неправильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void f25(){
    int *p1;
    char  *p2;
    string *p3;
    p1 = new int[3];
    p2 = new char;
    p3 = new string[2];
    *p1 = 78;
    *++p1 = *p2;
    *p2 = 'д';
    *p3 = "Зима";
    cout<<*--p1<<"  "<<*p1<<"  "<<*p2<<"  "<<*p3;
    *p3++;p3 = NULL; cout<<"  "<<p3;
}
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 18:17     Переменные в статической и динамической памяти! #4
C++
1
2
 int *p1;
    p1 = new int[3];
-это, если не заблуждаюсь размещение на кучи (динамическая память)
*p1 = 78; - это присвоение первому элемента массива p1[0]=78.
Вот это оригинально
C++
1
2
 char  *p2;
    p2 = new char;
это должно быть полный аналог char p2;но размещенный (на куче) в динамической памяти и следовательно обращаться придется p2[0]. Зачем
А вот здесь не понял
*++p1 = *p2;//присвоить значение первому элементу p1 взятый из памяти указателя p2 и сместить указатель p1 на один элемент. При этом p2 в этот момент еще не определен, плюс типы не одинаковы. размер p2 меньше p1. т.е. в любом случае эта строчка прочтет мусор...
Одним словом и задание не особо понял, а от кода
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 18:23  [ТС]     Переменные в статической и динамической памяти! #5
я же написал, что код скорее всего неправильный! а как по другому объяснить задание я не знаю
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 18:30     Переменные в статической и динамической памяти! #6
Цитата Сообщение от yurets17 Посмотреть сообщение
я же написал, что код скорее всего неправильный! а как по другому объяснить задание я не знаю
Так вы словами объясните что куда разместить, например так
выделить память в стеке (статическая память) для переменной и присвоить ей значение, далее выделить память на кучи (динамическая память) для массива или переменных и проделать с ними следующие операции....

Добавлено через 56 секунд
А то схему мы не поняли.... Да идею кода понять сложно
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 18:45  [ТС]     Переменные в статической и динамической памяти! #7
Извините, если что не так! я описал задание так как я его понимаю(хотя не исключено что я сам понимаю его неправильно).

Выделить в стеке память под две переменные(переменные не инициализировать, в них мусор), далее в кучи выделить память под два массива(один из трех элементов, а один из двух). Потом сделать указатель от первой переменной в стеке на нулевой элемент массива(в котором находится значение 78) из трех элементов. Далее со 2 элемента данного массива сделать указатель на какую-то область памяти в в кучи, в которой хранится символ "д". Далее с третьего элемента данного массива сделать указатель на другой массив из 2 элементов. Также от второй переменной в стеке сделать указатель на нулевой элемент второго массива, где находится строка символов "Зима", а в первый элемент данного массива инициализирован как NULL.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 19:08     Переменные в статической и динамической памяти!
Еще ссылки по теме:

C++ Переменные в динамической памяти!
C++ Выделение статической памяти, не используя статические объекты
C++ Возможно ли обращение к статической памяти функции извне?

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

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 19:08     Переменные в статической и динамической памяти! #8
Задание уточните, либо я его не понимаю, либо оно тупиковое:
вот это не понял:
Цитата Сообщение от yurets17 Посмотреть сообщение
потом сделать указатель от первой переменной в стеке на нулевой элемент массива
результат каков должен быть? переменная в стеке получит значения первого элемента массива? тогда так:
C++
1
2
3
4
int c;
int *p1=new int[3];
*p1=78;
c=*p1; //либо c=p1[0]
А это как?
Цитата Сообщение от yurets17 Посмотреть сообщение
Далее со 2 элемента данного массива сделать указатель на какую-то область памяти в в кучи, в которой хранится символ "д"
символ занимает один байт а элемент массива int под x86 занимает 4 байта, он и будет читать 4 байта (в 3х последних из которых мусор)....
Цитата Сообщение от yurets17 Посмотреть сообщение
где находится строка
строка - это сама по себе массив, его надо в стеке разместить или как ?
Yandex
Объявления
03.02.2014, 19:08     Переменные в статической и динамической памяти!
Ответ Создать тему
Опции темы

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