/*
Μεταβίβαση ενός δείκτη
Aris Bezas Fri, 24 December 2010, 11:45
*/
#include <iostream>
using namespace std;
void f(int *j); // H f() δέχεται ένα δείκτη int* σαν παράμετρο
int main()
{
int i;
int *p;
p = &i; // ο p τώρα δείχνει στην i (ανάθεση στον p της διέυθηνσης της i)
f(p); // μεταβίβαση ενός δείκτη <-- Η f() καλείται με ένα δείκτη προς ένα ακέραιο
cout << i; // η i είναι τώρα 100
return 0;
}
// η f() δέχεαι ένα δείκτη προς ένα ακέραιο
void f(int *j)
{
*j = 100;
}
// Η f() αναθέτει το 100 στη διεύθηνση με την οποία καλείται.
// Στη προηγούμενη δεν χρειάζεται ο p.
// Μπορουμε να πούμε απλά f(&i) και η διεύθηνση της i περνά απευθείας.
Άλλο ένα παράδειγμα
/*
Συνάρτηση με παραμέτρους δείκτες
Aris Bezas Sun, 26 December 2010, 11:29
*/
#include <iostream>
using namespace std;
//Δήλωση της swap() με χρήση δεικτών
void swap(int *x, int *y);
int main() {
int i, j;
i = 10;
j = 20;
cout << "Initial values of i, j:" << i << "," << j << "\n";
swap(&i, &j); // cal swap() with addresses of i and j
// καλέι την swap() με τις διευθήνσεις των μεταβλητών
// που θέλετε να εναλλάξετε
cout << "Swapped values of i and j: " << i << "," << j << "\n";
return 0;
}
/*
Εναλλαγή των τιμών των μεταβλητών που καταδείχνονται
απο τους x και y, χρησιμοποιώντας ρητές πράξεις δεικτών
*/
void swap(int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}