2015-03-01 9 views
-1

Так что эти заявления в своем коде (есть много других линий, но это дает мне неприятность):Инициализация указателя на C++?

int *vector1; 

if (vector1 == NULL) 
    { 

    } 

Когда я пытаюсь запустить его он говорит «неинициализированная локальные переменный„Vector1“используется» Если Я положил «& vector1 == NULL», он не жалуется, но также не работает правильно.

Я действительно не понимаю, почему я получаю эту ошибку. Я хочу, чтобы он что-то делал, если vector1 не указывает ни на что.

+0

& Vector1 никогда не нуль. почему бы вам просто не инициализировать vector1. – thang

ответ

2
int *vector1 = NULL; 
if (vector1 == NULL) 
{ 

} 

будет работать нормально

int *vector1 = nullptr; 
if (vector1 == nullptr) 
{ 

} 

Также работает, если вы хотите быть немного более актуальной.

Указатели не установлены в NULL по умолчанию. Ответ, почему здесь: Why aren't pointers initialized with NULL by default?

+0

, конечно, что (vector1 == NULL) всегда верно ... – thang

+0

А, это имеет смысл. Однако, я думал, когда указатели были созданы, они по сути указали на NULL? – Pongjazzle

+1

Нет, это не так, они указывают на данные мусора. Я обдумал свой пост со ссылкой на почему. – marsh

1

Предупреждение uninitialized local variable 'vector1' used говорит вам, что вы используете vector1, даже если вы не инициализируются его. Следовательно, его значение может быть любым.

Указатели (не static штук) не по умолчанию инициализируется в 0. Они инициализируются случайными нежелательными данными.

Если вы хотите инициализировать его с 0, NULL или nullptr (all the same thing):

int *vector1 = 0; // or NULL, or nullptr. 
+2

Статические переменные инициализируются до нуля http://stackoverflow.com/questions/13251083/the-initialization-of-static-variables-in-c –

+0

@ RichardChambers yea – emlai

Смежные вопросы