Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопросы по указателям в C++

1.8K
11 октября 2010 года
erslgoeirjh
26 / / 16.12.2005
Что означают в C++ следующие записи:
1) ++*p1 = ++*p2;
2) *++p1 = *++p2;
Где p1 и p2--указатели.

Я плохо разбираюсь в приоритетах операторов в C++, поэтому и задаю этот вопрос. (Тем более, что есть операторы с приоритетом слева направо, а есть операторы с приоритетом справа налево).
63K
11 октября 2010 года
ObiSan
1 / / 27.07.2010
В общих чертах "++p" сначала увеличивается значение p, потом программа идет дальше, в случае "p++" - сначала программа выполнит код, а потом значение увеличится.

Цитата:
#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;
}



P.S. Ну и в итоге мы сместили массив "вперед" на элемент.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог