Указатели на int в c++ [закрыт]
Что в этом плохого: я просто хотел указать на int и дать этому ints значение 0.
int* p;int* q;
*p = 0; *q = 0;
cout<<"p = "<<*p<<" q = "<<*q<<endl;
Это раздражает
Работы:
int* p;
*p = 0;
cout<<*p<<endl;
Аварии:
int* p;
int* q;
*p = 0;
*q = 0;
cout<<*p<<endl;
3 ответа:
Чтобы использовать указатель, этот указатель должен указывать на что-то. Итак, есть два шага: создать указатель и создать то, на что он указывает.
int *p, *q; // create two pointers int a; // create something to point to p = &a; // make p point to a *p = 0; // set a to 0 q = new int; // make q point to allocated memory *q = 0; // set allocated memory to 0
WORKS: int* p; *p = 0;
Нет! кажется, что это работает, но на самом деленеопределенное поведение .
Объявление
int* whatever;
оставляет вас с неинициализированным указателем. Вы не можете разыменовать его.Чтобы инициализировать указатель и установить значение, на которое он указывает, равным 0 (в вашем случае):
int* p = new int(0);