Δημοσιεύτηκε: 21 Ιουν 2011, 14:37
από linuxs
stamatiou έγραψε:
Δεν πολυκτάλαβα, γιατί δεν έβαλες κανονικά a και b στο scanf; Τι είναι τα adresses;


Καταρχήν αν προσπάθήσεις να βάλεις μόνο a, b στο scanf θα χτυπήσει ο compiler. Όταν χρησιμοποιούμε scanf πάντα βάζουμε τις διευθύνσεις δηλαδή με &a, &b κτλ
Η scanf διαβάζει απο πληκτρολόγιο δεδομένα και τα αποθηκεύει σύμφωνα με τα φορμάτ που έχουμε(%d %f etc) στις θέσεις που δείχνουν τα arguments μας(τα οποία θα πρέπει ηδη όταν έχουμε ορίσει κάποιο να έχει δεσμευτεί μνήμη για αυτό).

Δηλαδή, χωριάτικα και απλά...ορίζεις μια μεταβλητή,
Κώδικας: Επιλογή όλων
int a;

και αμέσως έχει δεσμευτεί μνήμη για αυτή. Υπάρχει κάπου στην μνήμη του υπολογιστή μας. Όταν χρησιμοποιείς την scanf και διαβάζεις κάτι αν του πείς,
Κώδικας: Επιλογή όλων
scnaf("%d", a);

στην δικιά σου γλώσσα είναι: "διάβασε έναν ακέραιο και ονόμασέ τον a". Είναι σωστό αλλα θα σου πεί ο Υ/Η "και εγώ πως θα τον θυμάμαι? Που να τον βάλω στην μνήμη?". Ε, εδώ μπαίνει το '&' που του λες ""Βάλε το εκεί που έχει δεσμευτεί μνήμη με ΟΝΟΜΑ 'α' ". Το κατάλαβες τώρα? :/