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

Функция размещения переменных в динамической памяти! - C++

Восстановить пароль Регистрация
 
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
21.01.2014, 16:51     Функция размещения переменных в динамической памяти! #1
Подскажите ошибку! вроде все сделал по методе, а не работает! проблема с переменными iP1, iP2, iP3
Правда в методе было написано так
C++
1
2
3
4
5
6
7
8
9
...
p1 * int;
p2 * float;
p3 * double;
 
i int;
f float;
d double;
...
А это мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
using namespace std;
void  varInDynamicMemory(){
    int *p1;
    float *p2;
    double *p3;
 
    int i;
    float f;
    double d;
 
    cout<<"Исходные значения для размещения в динамической памяти:\n";
    cout<<"int  float  double: ";
    cin>>i>>f>>d;
    cout<<"\n";
 
    int iP1=(int)p1;
    int iP2=(int)p2;
    int iP3=(int)p3;
 
 
    cout<<"Значения указателей до размещения переменных в памяти:\n";
    cout<<"P1 ="<<iP1<<"\n";
    cout<<"P2 ="<<iP2<<"\n";
    cout<<"P3 ="<<iP3<<"\n";
 
    /*Запрашиваем память для переменных в динамической памяти*/
    p1=new int;
    p2=new float;
    p3=new double;
 
    /*Берем значения указателей после выделения памяти под динамические переменные*/
 
    int iP1=(int)p1;
    int iP2=(int)p2;
    int iP3=(int)p3;
 
    /*Заполняем значениями динамические переменные*/
 
    *p1 = i;
    *p2 = f;
    *p3 = d;
 
    cout<<"Значения указателей после размещения переменных в памяти:\n";
    cout<<"P1 ="<<iP1<<"\n";
    cout<<"P2 ="<<iP2<<"\n";
    cout<<"P3 ="<<iP3<<"\n";
 
    cout<<"Значения динамических  переменных:\n";
 
    i=*p1;
    f=*p2;
    d=*p3;
 
    cout<<"*P1 ="<<i<<"\n";
    cout<<"*P2 ="<<f<<"\n";
    cout<<"*P3 ="<<d<<"\n";
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 16:51     Функция размещения переменных в динамической памяти!
Посмотрите здесь:

C++ Вопрос по динамической памяти
C++ Какая схема размещения массивов в памяти?
перераспределение динамической памяти C++
C++ Массив в динамической памяти
Теория по динамической памяти C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.01.2014, 17:08     Функция размещения переменных в динамической памяти! #2
Непонятно, что хотите... Зачем указатели к int приводите?
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
21.01.2014, 17:27  [ТС]     Функция размещения переменных в динамической памяти! #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Непонятно, что хотите... Зачем указатели к int приводите?
а как переделать правильно то что было написано в методе?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.01.2014, 17:35     Функция размещения переменных в динамической памяти! #4
Цитата Сообщение от yurets17 Посмотреть сообщение
а как переделать правильно то что было написано в методе?
указатели и без приведения к инту хорошо выводятся на консоль.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main() {
    
    int *p;
    std::cout << p << std::endl;
    p = new int;
    std::cout << p << std::endl;    
    
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.01.2014, 20:32     Функция размещения переменных в динамической памяти! #5
Цитата Сообщение от yurets17 Посмотреть сообщение
а как переделать правильно то что было написано в методе?
А кто видит, что там написано? Там же, наверное, не только это написано, но и то, что, собственно, нужно сделать?
Цитата Сообщение от yurets17 Посмотреть сообщение
Правда в методе было написано так
C++
1
2
3
4
5
6
7
8
p1 * int;
p2 * float;
p3 * double;
 
i int;
f float;
d double;
...
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
21.01.2014, 22:42  [ТС]     Функция размещения переменных в динамической памяти! #6
там весь текст такой-же, только я вместо
C++
1
2
3
4
5
6
7
p1 * int;
p2 * float;
p3 * double;
 
i int;
f float;
d double;
вставил
C++
1
2
3
4
5
6
7
int *p1;
    float *p2;
    double *p3;
 
    int i;
    float f;
    double d;
потому что так у меня выбивало кучу ошибок
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.01.2014, 22:47     Функция размещения переменных в динамической памяти! #7
Цитата Сообщение от yurets17 Посмотреть сообщение
там весь текст такой-же,
Не вижу никакого текста. Задание какое?
Цитата Сообщение от alsav22 Посмотреть сообщение
что, собственно, нужно сделать?
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
21.01.2014, 22:50  [ТС]     Функция размещения переменных в динамической памяти! #8
нужно создать функцию размещения переменной в динамической памяти! в методе текст такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
void  varInDynamicMemory( ) {
p1 * int;
p2 * float;
p3 * double;
 
i int;
f float;
d double;
 
cout<<” Исходные значения для размещения в динамической памяти:\n”;
cout<<int  float  double:;
cin>>i>>f>>d;
cout”\n”;
 
int iP1=(int)p1;
int iP2=(int)p2;
int iP3=(int)p3;
 
 
cout<<”Значения указателей до размещения переменных в памяти:\n”
cout<<”P1 =<<iP1<<”\n”;
cout<<”P2 =<<iP2<<”\n”;
cout<<”P3 =<<iP3<<”\n”;
 
    /*Запрашиваем память для переменных в динамической памяти*/
p1=new int;
p2=new float;
p3=new double;
 
  /*Берем значения указателей после выделения памяти под динамические переменные*/
 
int iP1=(int)p1;
int iP2=(int)p2;
int iP3=(int)p3;
 
      /*Заполняем значениями динамические переменные*/
 
*p1 = i;
*p2 = f;
*p3 = d;
 
cout<<”Значения указателей после размещения переменных в памяти:\n”
cout<<”P1 =<<iP1<<”\n”;
cout<<”P2 =<<iP2<<”\n”;
cout<<”P3 =<<iP3<<”\n”;
 
cout<<”Значения динамических  переменных:\n”
 
i=*p1;
f=*p2;
d=*p3;
 
cout<<*P1 =<<i<<”\n”;
cout<<*P2 =<<f<<”\n”;
cout<<*P3 =<<d<<”\n”;
 
 
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.01.2014, 23:11     Функция размещения переменных в динамической памяти! #9
Цитата Сообщение от yurets17 Посмотреть сообщение
в методе текст такой:
Метод - это, собственно, что и откуда?
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
21.01.2014, 23:18  [ТС]     Функция размещения переменных в динамической памяти! #10
методическое издание выданное преподавателем, в котором находятся задания на лабы, теория и некоторые примеры !
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.01.2014, 23:41     Функция размещения переменных в динамической памяти! #11
Цитата Сообщение от yurets17 Посмотреть сообщение
методическое издание выданное преподавателем, в котором находятся задания на лабы, теория и некоторые примеры !
Хрень это какая-то, а не методическое издание.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
void  varInDynamicMemory()
{
    int *p1;
    float *p2;
    double *p3;
 
    int i;
    float f;
    double d;
 
    cout<<"Исходные значения для размещения в динамической памяти:\n";
    cout<<"int  float  double: ";
    cin>>i>>f>>d;
    cout<<"\n";
 
    cout <<"Значения указателей до выделения памяти под указатели (мусор)\n";
    cout <<"p1 =" << p1 << "\n";
    cout <<"p2 =" << p2 << "\n";
    cout <<"p3 =" << p3 << "\n";
 
    /*Запрашиваем память для переменных в динамической памяти*/
    p1 = new int;
    p2 = new float;
    p3 = new double;
 
    cout<<"Значения динамических переменных до инициализации (мусор):\n";
 
    cout<<"*p1 =" << *p1 << "\n";
    cout<<"*p2 =" << *p2 << "\n";
    cout<<"*p3 =" << *p3 << "\n";
 
    cout<<"Значения указателей после выделения памяти:\n";
    cout<<"p1 =" << p1 <<"\n";
    cout<<"p2 =" << p2 <<"\n";
    cout<<"p3 =" << p3 <<"\n";
 
    /*Заполняем значениями динамические переменные*/
 
    *p1 = i;
    *p2 = f;
    *p3 = d;
 
    cout<<"Значения динамических переменных после инициализации:\n";
 
    i = *p1;
    f = *p2;
    d = *p3;
 
    cout<<"*p1 =" << i << "\n";
    cout<<"*p2 =" << f << "\n";
    cout<<"*p3 =" << d << "\n";
 
}
Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void  varInDynamicMemory()
{
    /*Запрашиваем память для переменных в динамической памяти*/
    int* p1 = new int;
    float* p2 = new float;
    double* p3 = new double;
    
    cin >> *p1 >> *p2 >> *p3;
    
    cout << "Значения указателей:\n";
    cout << "p1 =" << p1 << "\n";
    cout << "p2 =" << p2 << "\n";
    cout << "p3 =" << p3 << "\n";
    
    cout << "Значения динамически созданных переменных:\n";
    cout << "*p1 =" << *p1 << "\n";
    cout << "*p2 =" << *p2 << "\n";
    cout << "*p3 =" << *p3 << "\n";
}
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
21.01.2014, 23:47  [ТС]     Функция размещения переменных в динамической памяти! #12
дело в том что я так понял оно и должно выводить мусор! Мы просто работаем в QtCreator, а он спокойно достает мусор из памяти, без никаких ошибок! тоесть оно должно выводить сначала мусор, а тогда правильное значение(вроде как для сравнения)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.01.2014, 00:19     Функция размещения переменных в динамической памяти! #13
Цитата Сообщение от yurets17 Посмотреть сообщение
дело в том что я так понял оно и должно выводить мусор!
Я не об этом, а вот об этом:
C++
1
2
3
int iP1=(int)p1;
int iP2=(int)p2;
int iP3=(int)p3;
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
22.01.2014, 00:21  [ТС]     Функция размещения переменных в динамической памяти! #14
вот в этом то как раз и вся проблема! именно из-за этих строк появляется ошибка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 00:30     Функция размещения переменных в динамической памяти!
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.01.2014, 00:30     Функция размещения переменных в динамической памяти! #15
Я не об этом, а о том, что в этих действиях смысла не вижу. А ошибка там из-за того, что в коде (34 - 36) второй раз объявляются те же самые переменные. Нужно без объявления:
C++
1
2
3
iP1=(int)p1;
iP2=(int)p2;
iP3=(int)p3;
Yandex
Объявления
22.01.2014, 00:30     Функция размещения переменных в динамической памяти!
Ответ Создать тему
Опции темы

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