Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α14.3 · Τοπική μεταβλητή με το ίδιο όνομα σε δύο συναρτήσεις

Διάλεξη 14, διαφάνειες 9–10 · Δυσκολία ★☆☆ · trace · Κεφάλαια: 14

Η τοπική μεταβλητή μιας συνάρτησης δεν είναι ορατή σε κάποια άλλη συνάρτηση και επομένως μπορούμε να δηλώσουμε μεταβλητές με το ίδιο όνομα σε άλλες συναρτήσεις και να αναφέρονται σε άλλες θέσεις μνήμης.

Τι θα επιστρέψει αυτό το πρόγραμμα;

void foo() {
  int i = 43;
}
int main() {
  int i = 42;
  foo();
  return i;
}
$ gcc -o local local.c
$ ./local
$ echo $?

Υπόδειξη

Αναρωτηθείτε αν το i της foo και το i της main είναι η ίδια μεταβλητή: πού είναι η εμβέλεια του καθενός και σε ποιο frame της στοίβας ζει; Θυμηθείτε ότι το echo $? τυπώνει την τιμή που επέστρεψε η main.

Αριθμός στον οδηγό: Α14.3 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec14-local-same-name · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec14-local-same-name.html · Markdown (GitHub)