Вопросы по указателям в C++
1) ++*p1 = ++*p2;
2) *++p1 = *++p2;
Где p1 и p2--указатели.
Я плохо разбираюсь в приоритетах операторов в C++, поэтому и задаю этот вопрос. (Тем более, что есть операторы с приоритетом слева направо, а есть операторы с приоритетом справа налево).
Цитата:
#include "stdafx.h" // библиотека VS
#include <iostream>
using namespace std;
int main()
{
int c[4] = {1, 3, 7, 9};
int *p1 = c; //записываем в p1 адресс массива С
int *p2 = &c[1]; //записываем адсрес второго элемента
//--------------
cout << "*p1 = " << *p1 << endl; //смотрим что лежит по соответст. адресам
cout << "*p2 = " << *p2 << endl << endl;
++*p1 = ++*p2; // увеличиваем значения по адресу p1 и p2, и записываем значение по адресу p2 в p1
cout << "*p1 = " << *p1 << endl; //то что теперь лежит по адресу *p1
cout << "*p2 = " << *p2 << endl << endl;
//--------------
//вторая часть
//--------------
cout << "p1 = " << p1 << endl; // смотрим адрес p1
cout << "p2 = " << p2 << endl<< endl;
*++p1 = *++p2; //увеличиваем адрес p1 и p2, и записываем значение по адресу p2 в p1
cout << "p1 = " << p1 << endl;//новый адрес
cout << "p2 = " << p2 << endl;
cout << "*p1 = " << *p1 << endl;//значение по новому адресу
cout << "*p2 = " << *p2 << endl;
system("Pause");
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int c[4] = {1, 3, 7, 9};
int *p1 = c; //записываем в p1 адресс массива С
int *p2 = &c[1]; //записываем адсрес второго элемента
//--------------
cout << "*p1 = " << *p1 << endl; //смотрим что лежит по соответст. адресам
cout << "*p2 = " << *p2 << endl << endl;
++*p1 = ++*p2; // увеличиваем значения по адресу p1 и p2, и записываем значение по адресу p2 в p1
cout << "*p1 = " << *p1 << endl; //то что теперь лежит по адресу *p1
cout << "*p2 = " << *p2 << endl << endl;
//--------------
//вторая часть
//--------------
cout << "p1 = " << p1 << endl; // смотрим адрес p1
cout << "p2 = " << p2 << endl<< endl;
*++p1 = *++p2; //увеличиваем адрес p1 и p2, и записываем значение по адресу p2 в p1
cout << "p1 = " << p1 << endl;//новый адрес
cout << "p2 = " << p2 << endl;
cout << "*p1 = " << *p1 << endl;//значение по новому адресу
cout << "*p2 = " << *p2 << endl;
system("Pause");
return 0;
}
P.S. Ну и в итоге мы сместили массив "вперед" на элемент.