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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
sla000
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 7
#1

Что заменяет NULL в С++ - C++

19.05.2011, 20:51. Просмотров 2009. Ответов 6
Метки нет (Все метки)

Проблема в следующем: неинициализированный указатель не равен NULL. Такой код

C++
1
2
int  *a;
if ( a == NULL )  cout << "a = NULL";
не выдает строки. В дебагере a= 0xCCCCCCCC

Компилятор MVS C++ 2008

Нужно использовать какую-то другую константу или я что-то неправильно делаю?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.05.2011, 20:54     Что заменяет NULL в С++ #2
sla000, не инициализированный указатель равен мусору, который был в памяти, собственно, как и любая другая не инициализированная переменная. Лучше писать так:
C++
1
int *ptr = 0;
Ну или NULL, хотя Страуструп советует именно 0.
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
19.05.2011, 20:55     Что заменяет NULL в С++ #3
G++/Code::Blocks
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using namespace std;
int main()
{
    int  *a=NULL;
    if ( a == NULL )  cout << "a = NULL";
 
    return 0;
}
Выдает a = NULL
sla000
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 7
19.05.2011, 21:02  [ТС]     Что заменяет NULL в С++ #4
Цитата Сообщение от fasked Посмотреть сообщение
sla000, не инициализированный указатель равен мусору, который был в памяти, собственно, как и любая другая не инициализированная переменная. Лучше писать так:
C++
1
int *ptr = 0;
Ну или NULL, хотя Страуструп советует именно 0.
У меня проблема несколько глубже. У меня список из структур, в которых есть указатели на структуры этого же типа.

C++
1
2
3
4
5
struct req 
{
int a;
req * next;
};
И как узнать, где конец списка, чтобы добавить запись в конец списка? В c можно было вроде по NULL определить непроинициализированный указатель, а здесь?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.05.2011, 21:04     Что заменяет NULL в С++ #5
Цитата Сообщение от sla000 Посмотреть сообщение
В c можно было вроде по NULL определить непроинициализированный указатель
Нельзя.
Цитата Сообщение от sla000 Посмотреть сообщение
а здесь?
Так же как и в Си.
Цитата Сообщение от sla000 Посмотреть сообщение
У меня проблема несколько глубже. У меня список из структур, в которых есть указатели на структуры этого же типа.
Инициализируйте указатели нулями при создании. Вы пишете на Си++, то есть существует возможность использовать конструкторы.
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
19.05.2011, 21:05     Что заменяет NULL в С++ #6
Явно присвоить NULL при добавлении нового элемента в список
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2011, 21:08     Что заменяет NULL в С++
Еще ссылки по теме:

Что такое NULL ? C++
C++ C++ текстовые файлы (что означает запись !=NULL ?)
Что возвращает time(NULL)? C++
Что делать, если "просят" разыменовать null-pointer? C++
Что значит "NULL"? C++

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

Или воспользуйтесь поиском по форуму:
sla000
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 7
19.05.2011, 21:08  [ТС]     Что заменяет NULL в С++ #7
Цитата Сообщение от fasked Посмотреть сообщение
Нельзя.

Так же как и в Си.

Инициализируйте указатели нулями при создании. Вы пишете на Си++, то есть существует возможность использовать конструкторы.
А, я просто надеялся, что можно как-то по другому. Спасибо за помощь.
Yandex
Объявления
19.05.2011, 21:08     Что заменяет NULL в С++
Ответ Создать тему
Опции темы

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