Ο Τελεστής & στη C

Ο Τελεστής & στη C

Ο Τελεστής & στη C και η συνάρτηση scanf()

Ο Τελεστής & στη C, χρησιμοποιείται στη συνάρτηση scanf(), για να καταχωρεί τιμές σε μεταβλητές του καλούντος προγράμματος.

Ο τελεστής & στη C μας δίνει τη διεύθυνση στην οποία αποθηκεύεται μια μεταβλητή. Για παράδειγμα, αν p είναι το όνομα μιας μεταβλητής, τότε &p είναι η διεύθυνση της μεταβλητής p στη μνήμη.

Αν η μεταβλητή p έχει τιμή 100 και είναι αποθηκευμένη στη διεύθυνση 15879, τότε η παρακάτω πρόταση :

printf(“%d %u\n”, p, &p);

θα δώσει το εξής αποτέλεσμα :

100 15879

Ο Τελεστής & στη C – Παράδειγμα

Ακολουθεί ένα πρόγραμμα, που χρησιμοποιεί τον τελεστή διεύθυνσης & για να βρει πού φυλάσσονται μεταβλητές με το ίδιο όνομα, οι οποίες ανήκουν σε διαφορετικές συναρτήσεις.

/* έλεγχος για το πού βρίσκονται αποθηκευμένες μεταβλητές */
#include <stdio.h>

void myfunction(); /* δήλωση συνάρτησης */

main(){
  int p=2, b=5;
  printf("Στη main(), p = %d και &p = %p \n", p, &p);
  printf("Στη main(), b = %d και &b = %p \n", b, &b);
  myfunction(p);
}

void myfunction(b); /* ορισμός συνάρτησης */{
  int b;
  int p = 10;
  printf("Στη mikado(), p = %d και &p = %p \n", p, &p);
  printf("Στη mikado(), b = %d και &b = %p \n", b, &b);
}

Χρησιμοποιήσαμε εδώ τη μορφή %p για την εκτύπωση των διευθύνσεων· αν, όμως, το σύστημά μας δεν διαθέτει αυτή τη μορφή, τότε μπορούμε να δοκιμάσουμε με τη μορφή %u.

Το αποτέλεσμα του προηγούμενου προγράμματος θα είναι το εξής :

Στη main(), p = 2 και &p = FFD8
Στη main(), b = 5 και &b = FFDA
Στη myfunction(), p = 10 και &p = FFD0
Στη myfunction(), b = 2 και &b = FFD6

Οι διευθύνσεις εμφανίζονται εδώ σε 16δική μορφή. Από το αποτέλεσμα βλέπουμε ότι οι δύο μεταβλητές p έχουν διαφορετικές διευθύνσεις, όπως και οι δύο μεταβλητές b. Δηλαδή, ο υπολογιστής τις θεωρεί σαν τέσσερις ξεχωριστές μεταβλητές.

Απάντηση

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.