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

ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? - C++

Восстановить пароль Регистрация
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 20:48     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #1
Пожалуста, обьясните принцип. Такого присвоения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 20:48     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий?
Посмотрите здесь:

C++ Не понятно куда девается значение по указателю?
Указателю на базовый класс присвоить адрес производного класса C++
Надо указателю на long int присвоить значение указателя на char C++
C++ Присвоить Указателю адрес из массива Char
C++ Не получается присвоить значение указателю на функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 20:51     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #2
C++
1
int * ptr = 0;
Вот и весь принцип такого присвоения.
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 20:55  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #3
Спасибо!!!!
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
21.09.2013, 21:01     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #4
Dimka-novitsek, лучше присваивать указателю nullptr
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:02  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #5
pInt: переопределение; множественная инициализация
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 21:02     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #6
coloc, только если ты работаешь со стандартом С++11, в прошлых стандартах нет nullptr.

Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
pInt: переопределение; множественная инициализация
Ты о чем?
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:04  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #7
А покажите пожалуста полное урравнение ( присвоение) ну всю строку, пожалуста.

Добавлено через 44 секунды
Я об этом int * pInt = 0;
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 21:05     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #8
Я не понимаю о чем ты. Это пример присвоения указателю значения 0.
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:05  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #9
Я о необходимости обнуления адреса после delete pInt; .
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
21.09.2013, 21:06     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #10
castaway, вот, нагуглил, как добавить nullptr в компиляторах, в которых нету C++11
C++
1
static struct nullptr_t {template<typename T> operator T* () const {return 0;}} nullptr;
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:08  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #11
рекомендуется:Не забывайте каждое выделение свободной памяти с помощью оператора new сопроводить освобождением памяти с помощью оператора delete. Незабывайте присваивать освобожденным указателям нулевые значения!

Добавлено через 16 секунд
Спасибо!!!!!
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 21:08     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #12
coloc, а смысл? Ты знаешь в чем разница в nullptr и 0 ?
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Я о необходимости обнуления адреса после delete pInt; .
Так это и есть то, о чем ты говоришь: ptr = 0;
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:14  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #13
Щас щас спробую

Добавлено через 3 минуты
pInt = 0; Заглючило Необработанное исключение в "0x0041187e" в "указателя.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 21:19     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #14
Как на счет того, чтобы показать код!? Я ни хрена не понимаю что у тебя там происходит..
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:31  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #15
Разбираю это выражение
C++
1
static struct nullptr_t {template<typename T> operator T* () const {return 0;}} nullptr;
Я еще не использовал слово struct. Не встречал template, <typename T> , в общем строку не понял.
Достаточно включить ее и потом присваивать pInt = nullptr; ?

Добавлено через 1 минуту
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
68
69
// Указатель this
  #include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
#include<windows.h> 
typedef unsigned short int USHORT;
 
 
 
  class Rectanglle
 
  {
 
  public:
 
     Rectanglle();
    ~Rectanglle();
 void SetLength(int length) { this->itsLength = length; }
 int GetLength() const { return this->itsLength; }
 void SetWidth(int width) { itsWidth = width; }
 int GetWidth() const { return itsWidth; }
 int itsLength;
 int itsWidth;
 };
 
 Rectanglle::Rectanglle()
{
    itsWidth = 5;
    itsLength = 10;
 }
 
 Rectanglle::~Rectanglle()
 {}
 
 int main()
 
 {
    Rectanglle theRect;
    cout << "theRect is " << theRect.GetLength() << " meters long.\n";
    cout << "theRect is " << theRect.GetWidth() << " meters wide.\n";
    theRect.SetLength(20);
    theRect.SetWidth(10);
    cout << "theRect is " << theRect.GetLength() << " meters long.\n";
    cout << "theRect is " << theRect.GetWidth() << " meters wide.\n";
    USHORT * pInt = new USHORT;
    *pInt = 10;
    cout << "*pInt; " << *pInt << endl;
    delete pInt;
   long * pLong = new long;
   *pLong = 90000;
     cout << "*pLong: " << *pLong << endl;
   *pInt = 20; 
   cout << "*pInt: " << *pInt << endl;
     cout << "*pLong: " << *pLong << endl;
    delete pLong;
 
    pInt = 0;
     pLong =  0;
   cout << "*pInt: " << *pInt << endl;
     cout << "*pLong: " << *pLong << endl;
    
    system("pause");return 0;
 
 }
Пожалуста!

Добавлено через 3 минуты
Это в этих строках pInt = 0;
pLong = 0;

Добавлено через 1 минуту
Нужно не число заслать по нужному (указанному) адресу, а неким образом вынулить его самого, сам адрес.

Добавлено через 35 секунд
Хотя я ждал что так и будет..

Добавлено через 3 минуты
Или его все же обнулило. Я щас еще может какой-то експиримент попробую.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
21.09.2013, 21:32     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #16
Dimka-novitsek, после этой строчки
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
pInt = 0;
не нужно пытаться читать значение, которое записано в указателе:
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
cout << "*pInt: " << *pInt << endl;
т.к. этот указатель ни на что не указывает. его адрес равен нулю

точнее не адрес самого указателя, а то, на что он указывает. а по нулевому адресу не могут располагаться никакие переменные
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.09.2013, 21:42  [ТС]     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #17
Да, да, я прочитал это таким кодом

C++
1
2
3
4
pInt = 0;
     pLong =  0;
   cout << "pInt: " << pInt << endl;
     cout << "pLong: " << pLong << endl;
СПАСИБО!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 21:47     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий?
Еще ссылки по теме:

C++ Перед каждым вторым отрицательным значением в массиве вставить нулевое значение
C++ Как лучше присвоить указателю на указатель адрес массива
Присвоить указателю конкретный адрес C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 21:47     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий? #18
Товарищ с гитарой правильно говорит.
Если указатель объявлен, к примеру как: int * p = new int( 10 );
Тогда:
p = 123; // - изменение самого указателя, т.е. изменяешь адрес, если под адрес 123 не выделена область памяти, то ты словишь исключение
*p = 123; // - изменение значения, на которое указывает указатель, т.е. ты изменяешь значение 10 на 123, это нормально
Yandex
Объявления
21.09.2013, 21:47     ПРисвоить указателю нулевое значение- кк? с поммощщю каких знаков и действий?
Ответ Создать тему
Опции темы

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