Работа с указателями и функции

Рубрика: C++, Дата: 2 March, 2013, Автор:
Tags:

Рассмотрим примеры как работать с указателями, как с помощью их можно можно менять значения переменных, как передаются указатели по ссылке или по значению, что такое указатель на указатель и всякою фигню.

меняем значения переменных с помощью указателей:

//rabota c ykazatel9mi
#include <iostream>
using std::cout;
using std::endl;
//obmen znachenii cherez ykazateli
void swap(int* a, int* b);

int main()
{
    int a=32;
    int b=40;
    cout <<"a= "<<a<<" b= "<<b<<endl;
    obmen
    swap(&a,&b);

    return 0;
}

//obmen znachenii cherez ykazateli
void swap(int* a, int* b)
{
	int prom=*a;
	*a=*b;
	*b=prom;
}

Теперь попробуем разобрать как можно поменять значения самих указателей.

Вотокая фигня получилась:

//rabota c ykazatel9mi
#include <iostream>
using std::cout;
using std::endl;
#include <cstdlib>
using std::exit;

//obmen ykazatelei
void swapYk(int** a, int** b);

int main()
{
	int a=32;
	int b=40;

	cout <<"____________________________________"<<endl;
	//cozdaem dva ykazatel9
	int* a1=&a;
	int* b1=&b;
	cout <<"*a1= "<<*a1<<" *b1= "<<*b1<<endl;
	cout <<&a<<' '<<&b<<" adrecca ykazatelei"<<endl;
	//putaemc9 pomen9t6 znacheni9 ykazatelei
	swapYk(&a1,&b1);//peredaem adrecca
	cout <<"*a1= "<<*a1<<" *b1= "<<*b1<<endl;
	cout <<&a<<' '<<&b<<" adrecca ykazatelei"<<endl;

	return 0;
}

//obmen ykazatelei
void swapYk(int** a, int** b)
{
	//cout <<*a<<' '<<*b<<" hellow"<<endl;
	int* temp=*a;
	*a=*b;
	*b=temp;

}

не понятная фигня но менят, тяжело конечно сами указатели понимать, но не куда не деться приходиться.

 

 

rss