Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как поменять значения двух переменных местами с помощью указателей в C++ ?

Массон Ученик (211), закрыт 4 года назад
Ввести значение 2-х символьных переменных а и b. Направить два указателя на эти переменные. С помощью указателя изменить значение переменной а . Затем поменять местами значения переменных а и b через их указатели.

#include
#include
using namespace std;

int main()
{
float a,b,c;
srand(time(0));
c=rand()%100;
cout<<"vvedite a="<>a;
cout<<"vvedite b="<>b;

float *pa=&a;
float *pb=&b;
*pa=a+c; // ТУТ ТИПО C - ЭТО ПЕРЕМЕННАЯ ДЛЯ ИЗМЕНЕНИЯ ПЕРЕМЕННОЙ a
cout<<"izmenennoe znachenie (a):"<<*pa<<endl;

ТУТ БРЕД ПОШЕЛ!!!!
a=*pb; // вот этот бред не работает помогите!
b=*pa;
cout<<a<<" "<<b<<endl;

}
Лучший ответ
LV Мудрец (17454) 5 лет назад
char a='A',b='B',c='C';
char *pb=&b;
char *pa=&a;
char *pn=&a;// пусть pn указывает на a(пусть pn хранит в себе адрес а)
cout<< "a="<<a<<"\n b="<<b<<"\n c="<<c<<"\n *pn"<<*pn;
cout<<"\n pa="<<pa<<" pb="<<pb<<" pn="<<pn;

pn=pb;// пусть pn хранит значение указателя pb. в pn записан адрес памяти переменной b
pb=pa;// пусть pb хранит значение указателя pa.в pb записан адрес памяти
pa=pn;
cout<< "\na="<<a<<"\n b="<<b<<"\n c="<<c<<"\n *pn"<<*pn;
cout<<"\n pa="<<pa<<" pb="<<pb<<" pn="<<pn;

c=b; // с - переменная для хранения значения переменной b
*pn =*pa;// по адресу памяти, который хранится в pn запишем значение, которое хранится по адресу pa
*pa=c;
cout<< "\na="<<a<<"\n b="<<b<<"\n c="<<c<<"\n *pn"<<*pn;
cout<<"\n pa="<<pa<<" pb="<<pb<<" pn="<<pn;
system("pause");

Для понимания полезно вывести на консоль адреса и значения по адресам всех переменных после каждой команды
LVМудрец (17454) 5 лет назад
char a='A',b='B',c='C';
char *pb=&b;
char *pa=&a;
char *pn=&a;// пусть pn указывает на a(пусть pn хранит в себе адрес а)
cout<< " a="<<a<<"\n b="<<b<<"\n c="<<c;
cout<<"\n pa="<<*pa<<" pb="<<*pb<<" pn="<<*pn;

pn=pb;// пусть pn хранит значение указателя pb. в pn записан адрес памяти переменной b
pb=pa;// пусть pb хранит значение указателя pa.в pb записан адрес памяти
pa=pn;
cout<< "\na="<<a<<"\n b="<<b<<"\n c="<<c;
cout<<"\n pa="<<*pa<<" pb="<<*pb<<" pn="<<*pn;

c=b; // с - переменная для хранения значения переменной b
*pb =*pa;// по адресу памяти, который хранится в pn запишем значение, которое хранится по адресу pa
*pa=c;
cout<< "\na="<<a<<"\n b="<<b<<"\n c="<<c;
cout<<"\n pa="<<*pa<<" pb="<<*pb<<" pn="<<*pn;
system("pause");

// сравнить значения переменной и значение по адресу
Остальные ответы
Krab Bark Искусственный Интеллект (301276) 5 лет назад
Переменные у тебя не символьные.

#include "iostream"
using namespace std;
int main(){
char a,b,c,*pa=&a,*pb=&b;
cin>>a>>b;
++*pa;
cout<< a<<' '<< b<< endl;
*pa^=*pb^=*pa^=*pb;
cout<< a<<' '<< b<< endl;}
LVМудрец (17454) 5 лет назад
а зачем ++*pa ?
Krab Bark Искусственный Интеллект (301276) "С помощью указателя изменить значение переменной а ". Вот я и изменяю его, увеличивая на 1.
Похожие вопросы