Tools-C

Pointers

/*
Μεταβίβαση ενός δείκτη

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;
}