2015-08-27 2 views
0
int main(){ 

int V1; 
float V2; 
bool V3 = true; 

int *Ptr1; 
int *Ptr2; 


*Ptr1 = V1; 
*Ptr2 = V2; 

cout << "Enter the worth of V1: " << endl; 
cin >> *Ptr1; 

cout << "Enter the worth of V2: " << endl; 
cin >> *Ptr2; 

int *Ptr3 = &Ptr1 - &Ptr2; 
cout << Ptr3; 

} 

Моя проблема в том, что когда я объявляю переменные, я должен поместить один float и один int, поэтому программа не позволяет мне вычитать float с int.Как я могу вычесть одну переменную float с помощью int

ответ

0
int *Ptr1; 
int *Ptr2; 


*Ptr1 = V1; 
*Ptr2 = V2; 

Это неопределенное поведение. Ptr1 и Ptr2 не инициализированы, но вы пытаетесь разыменовать их в операторах присваивания. Вы пытаетесь записать значения в случайные (неинициализированные) ячейки памяти.

int *Ptr3 = &Ptr1 - &Ptr2; 

Здесь используется оператор & взять адрес ptr1 и ptr2 (которые уже указатели!), А затем попытаться вычитать адреса, и использовать , что для инициализации ptr3.

Ничего из этого не имеет смысла. Вы, кажется, недопонимаете, как указатели, оператор &, и оператор * работает. Лучше сделайте еще один проход через любые справочные материалы, из которых вы работаете ...

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