logo

Przekazywanie danych do funkcji przez: wartość, wskaźnik i referencję. Struktury.


Temat tego wykłady ilustruje poniższy przykład

#include<cstdlib>
#include<iostream>


using namespace std;



struct Punkt  // Deklaracja struktury
{
	int x, y;     // Pola struktury
};                 // UWAGA! Nigdy nie zapominać o średniku


void PrzesunWskP(Punkt * a,  // ...przez wskaźnik (adres)
                            Punkt d)    // ...przez wartość
{
	a->x += d.x;    //  a->x wyłuskanie wskaźnika (dereferencja). Alternatywnie (*a).x
	a->y += d.y;    //  a->y wyłuskanie wskaźnika (dereferencja). Alternatywnie (*a).y
}

void PrzesunRefP(Punkt & a,   // ...przez referencje (adres)
                           Punkt d)     // ...przez wartość
{
	a.x += d.x;    //  referencji używa się tak jak zwykłej zmiennej
	a.y += d.y;    //  referencji używa się tak jak zwykłej zmiennej
}


int main(int argc, char *argv[])
{
	Punkt p, d; //definicja zmiennych strukturalnych typu Punkt
	d.x = 1;    d.y = 2;

	cout << "\nPrzekazywanie przez wskaznik" << endl;
	xp.x=p.y=0;
	for (int i=0; i<3; ++i)
	{
		PrzesunWskP(&p, // pobranie adresu zmiennej p
		d);
		cout << "(" << p.x <<", " << p.y <<")" << endl;
	}

	cout << "\nPrzekazywanie przez referencje" << endl;
	p.x=p.y=0;
	for (int i=0; i<3; ++i)
	{
		PrzesunRefP(p, d);
		cout << "(" << p.x <<", " << p.y <<")" << endl;
	}

	system("pause");
	return 0;
};

Więcej można znaleźć na stronach:

  1. http://icis.pcz.pl/~roman/mat_dyd/prog/c.html#struk
  2. http://pl.wikibooks.org/wiki/C/Typy_z%C5%82o%C5%BCone
  3. http://kondel.ko.funpic.de/?pid=17
  4. http://www.java2s.com/Tutorial/Cpp/0160__Structure/Catalog0160__Structure.htm

logo