21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
1

Указатели и их обнуления

22.07.2012, 19:31. Показов 2015. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот допустим есть такая штука.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//...
class Parasya ()
{
 private:
  int dom;
 
public:
 Parasya ()
 {
   dom=3;
 }
 show ()
 {
  cout<<dom;
 }
}
Parasya* PtrSVIN;
PtrSVIN = new Parasya;
cout<<PtrSVIN;
PtrSVIN=NULL;
cout<<PtrSVIN;
//...
как бы все норм. Создается указатель и он указывает на какой то кусочек памяти и если надо можно обнулить (сделать так чтоб указатель ни на что не указывал).
Но как только я делаю массив указателей что то не ладится .((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//...
class Parasya ()
{
 private:
  int dom;
 
public:
 Parasya ()
 {
   dom=3;
 }
 show ()
 {
  cout<<dom;
 }
}
Parasya* PtrSVIN;
PtrSVIN = new Parasya[4];
cout<<PtrSVIN[2];
PtrSVIN[2]=NULL;// здесь не проглатывает компилятор. Помогите кто чем может.
cout<<PtrSVIN[2];
//...
Можете направить учить матчасть, только укажите куда именно.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2012, 19:31
Ответы с готовыми решениями:

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Обнуления массива слов
Задание такое: Написать программу обнуления массива слов длинною 100 элементов, используя все...

Секундомер с возможностью обнуления
Как реализовать секундомер в ActionScript, что бы его можно было обнулять? Смотрел пример на...

Кнопка обнуления форм
Здравствуйте, товарищи! Мне нужно сделать кнопку, чтобы при её нажатии обнулялись поля, которым я...

13
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
22.07.2012, 19:47 2
это не код , а хаус какой-то!
Цитата Сообщение от NafNaf Посмотреть сообщение
C++
1
2
3
4
5
6
7
... class Parasya ()// скобки () к чертям удалить
 { private: int dom; 
public: Parasya () 
{ dom=3; }
 show () { cout<<dom; } }; // точка с запятой!
// это что дальше? main типа? 
 Parasya* PtrSVIN[4]; //вот массив указателей!
1
21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
22.07.2012, 19:50  [ТС] 3
не ну может оформление и не все норм. просто я накидал не проверя в компиляторе на память упрощенную схему.
но суть в том что обнулить один из элементов массива указателей я немогу. а обнулить простой указатель можно.

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
int main ()
{
//...
class Parasya
{
 private:
  int dom;
 
public:
 Parasya ()
 {
   dom=3;
 }
 show ()
 {
  cout<<dom;
 }
};
Parasya* PtrSVIN;
PtrSVIN = new Parasya;
cout<<PtrSVIN;
PtrSVIN=NULL;
cout<<PtrSVIN;
//... 
return 0;
}
А вот это уже не работает.

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
int main ()
{
//...
class Parasya
{
 private:
  int dom;
 
public:
 Parasya ()
 {
   dom=3;
 }
 show ()
 {
  cout<<dom;
 }
};
Parasya* PtrSVIN;
PtrSVIN = new Parasya[4];
cout<<PtrSVIN[2];
PtrSVIN[2]=NULL;// тут не работает.!!
cout<<PtrSVIN[2];
//... 
return 0;
}
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
22.07.2012, 19:51 4
C++
1
2
Parasya* PtrSVIN;
PtrSVIN = new Parasya[4];
Это не массив указателей, а указатель на массив.
0
21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
22.07.2012, 19:57  [ТС] 5
Спасибо теперь понял.
Тоесть мне надо сделать так
Parasya** PtrPtrSVIN;
PtrPtrSVIN = new Parasya* [5];

я правильно понял??
0
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
22.07.2012, 19:57 6
Вообще надо писать код или текст ошибки.
Удалять массив указателей надо так:
C++
1
delete[] PtrSVIN;
0
21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
22.07.2012, 19:59  [ТС] 7
Насчет удаления я знаю. Еще раз повторю - это упрощенная схема. (Но все равно спасибо за совет)
0
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
22.07.2012, 20:00 8
C++
1
PtrSVIN[2]
а к чему Вы вообще хотите обратится .. если у Вас
C++
1
Parasya* PtrSVIN;
что здесь интересное 2-е? (ну то есть 3-е)
0
21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
22.07.2012, 20:02  [ТС] 9
Вообще я хотел оптимизировать оперативную память (как бы это смешно не звучало) и составить список из кусочков расположенных в разных местах, а не как обычный массив монолитом. (но видимо как раз это и сделал)
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
22.07.2012, 20:15 10
Немного дописать и все работает
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
60
61
62
63
64
65
66
67
#include <iostream>
 
class Parasya 
{
 private:
 
     int dom;
 
public:
 
 Parasya ()
 {
     dom=3;
 }
 
 ~Parasya (){}
 
 void show ()
 {
    std::cout<<dom;
 }
     friend std::ostream& operator<<(std::ostream& s, const Parasya & t);
     void  operator=(const int val);
     Parasya & operator=(const Parasya & rhs);
 
};
 
 
std::ostream& operator<<(std::ostream& s, const Parasya & t)
{
    s << t.dom << std::endl ;
    return s;
}
 
 
Parasya & Parasya ::operator=(const Parasya & rhs)
{
    if(this == &rhs) 
    {
       return *this;
    }
    dom  = rhs.dom;
    
    return *this;
}
 
void  Parasya ::operator=(const int val)
{   
    dom  = val; 
}
 
 
int main ()
{
Parasya* PtrSVIN;
PtrSVIN = new Parasya[4];
 
std::cout << PtrSVIN[2];
 
PtrSVIN[2] = NULL;
 
std::cout << PtrSVIN[2];
 
delete[] PtrSVIN;
 
  return 0;
}
1
21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
22.07.2012, 20:52  [ТС] 11
C2039: ostream: не является членом "std"
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
22.07.2012, 21:16 12
Цитата Сообщение от NafNaf Посмотреть сообщение
C2039: ostream: не является членом "std"
http://liveworkspace.org/code/... 9a6826090f
0
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
22.07.2012, 21:22 13
Цитата Сообщение от MrCold Посмотреть сообщение
Parasya & Parasya ::operator=(const Parasya & rhs)
{
if(this == &rhs)
{
return *this;
}
dom = rhs.dom;

return *this;
}
C++
1
2
3
4
5
6
Parasya & Parasya ::operator=(const Parasya & rhs)
{
     if(this != &rhs)
         this->dom = rhs.dom;
     return *this;
}
2
21 / 21 / 2
Регистрация: 22.07.2012
Сообщений: 241
22.07.2012, 22:00  [ТС] 14
Спасибо всем.
Но я именно вот так хотел
C++
1
2
3
Parasya** PtrSVIN;
PtrSVIN = new Parasya* [10];
PtrSVIN[2]=NULL;
Просто у меня как бы контейнер из 10 позиций.
И я их освобождая должен обнулить, вот и присваиваю их NULL. Просто я думал одно а сделал другое в начале.)
Еще раз всем спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2012, 22:00
Помогаю со студенческими работами здесь

Обнуления значения переменных
Всем привет я немного нуб в программировании, прошу понять и немного обьяснить, как делать ...

Обнуления элементов матрицы
Нужно обнулить элементы матрицы которые не входят в ромб (при помощи процедуры,у меня она zeroing)....

После обнуления биоса
Доброго всем времени суток:) Сначала компьютер не включался, потом обнулил биос комп включился...

СНПЧ кнопка обнуления чипов
На принтере стоит СНПЧ, и плата которая обнуляет чипы, сломалась (не удачно нажали, и плата на...

Не запускается без обнуления биоса
Мат. плата – Asus M4A78 PRO БП – FSP ATX-500PNR ЦП – AMD Phenom X4 955 BE Вчера купил мать и...

Настройка автоматического обнуления поля
Привет, Подскажите, как настроить автоматический сброс числового значения с наступлением...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru