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

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

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

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

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

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

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

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

Нужно использовать какую-то другую константу или я что-то неправильно делаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 20:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что заменяет NULL в С++ (C++):

Что в C++ заменяет StandartOutput в .NET? - C++
Нужно создать командную строку и записать то что она выводит в переменную string. Как это сделать?

Что такое NULL ? - C++
допустим присваиваем указателю или переменной или возвращаем NULL(return NULL) - что это означает? чем он отличается от нуля(false)

Что такое NULL ? - C++
Обьясните, что значит NUL часто вижу его в условиях и операторах а что это значит точто не знаю!!!

Что возвращает time(NULL)? - C++
Что возвращает функция time(NULL) ( что значит возвращаемое число ), при подключенной стандартной библиотеке &lt;time.h&gt;?

Что использовать с указателями? 0, NULL, nullptr? - C++
NULL в WinDef.h описан как #define NULL 0. То есть в случае использования как с указателями, так и другими переменными разницы 0. Про...

Что означает сточка ::CoInitialize(NULL); ? - C++
Привет, совсем небольшой вопрос, буду признателен за ответ: (я начинающий в C++, и пытаюсь разобраться в языке на основе рабочих...

6
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.05.2011, 20:54 #2
sla000, не инициализированный указатель равен мусору, который был в памяти, собственно, как и любая другая не инициализированная переменная. Лучше писать так:
C++
1
int *ptr = 0;
Ну или NULL, хотя Страуструп советует именно 0.
1
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
19.05.2011, 20:55 #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
0
sla000
0 / 0 / 0
Регистрация: 03.08.2010
Сообщений: 7
19.05.2011, 21:02  [ТС] #4
Цитата Сообщение от fasked Посмотреть сообщение
sla000, не инициализированный указатель равен мусору, который был в памяти, собственно, как и любая другая не инициализированная переменная. Лучше писать так:
C++
1
int *ptr = 0;
Ну или NULL, хотя Страуструп советует именно 0.
У меня проблема несколько глубже. У меня список из структур, в которых есть указатели на структуры этого же типа.

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

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

Инициализируйте указатели нулями при создании. Вы пишете на Си++, то есть существует возможность использовать конструкторы.
А, я просто надеялся, что можно как-то по другому. Спасибо за помощь.
0
19.05.2011, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2011, 21:08
Привет! Вот еще темы с ответами:

C++ текстовые файлы (что означает запись !=NULL ?) - C++
Вот текст программы: int main() { char str_file=&quot;Text from the App&quot;; FILE *f; f=fopen(&quot;My_text.txt&quot;, &quot;w&quot;); if(f !=...

Не работает код: m_web1.Navigate ('gidro.htm',0,0,NULL,NULL); - C++
Друзья помогите начинаюшему значит делаю m_web1.Navigate ('с:\gidro.htm',0,0,NULL,NULL);работает делаю m_web1.Navigate...

При запуске выдает expression stream !=null; что делать? - C++
задача такая: написать прогу, которая будет решать систему линейных уравнений методом гаусса. ошибок при компиляции не выдает, а вот при...

Что делать, если "просят" разыменовать null-pointer? - C++
Есть код примерно следующего содержания: class Foo { private: int *ptr; public: int&amp; operator*() { ...


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

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

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