vellamos_power Δημοσ. 14 Σεπτεμβρίου 2010 Δημοσ. 14 Σεπτεμβρίου 2010 #include<stdio.h> #include <stdlib.h> void test(int *a, int b, int *c){ *a=b-2; *c=b+3; b=*a+*c; } main() { int a,b,c; b=2; test(&a,b,&c); printf("a=%d b=%d c=%d\n",a,b,c); test(&b,c,&a); printf("a=%d b=%d c=%d\n",a,b,c); test(&c,b,&a); printf("a=%d b=%d c=%d\n",a,b,c); system("pause"); } και τα αποτελεσματα ειναι καθε φορα: α=0 b=2 c=5 a=8 b=3 c=5 a=6 b=3 c=1 το προβλημα ειναι οτι δεν καταλαβαινω πως βγαινουν οι αριθμοι αυτοι.την πρωτη σειρα την βγαζω αλλα απο κει και μετα δεν μπορω να τα καταλαβω.
Technology fan Δημοσ. 14 Σεπτεμβρίου 2010 Δημοσ. 14 Σεπτεμβρίου 2010 Ας πάρω τη πρωτη εκτυπωση test(&a,b,&c); Το a και c δεν εχουν καποια τιμή, οπότε στη συναρτηση εισάγονται οι διευθύνσεις των μεταβλητών. Αντιθέτως το b είναι ίσο με 2. Μέσα στη κλήση της συνάρτησης test. *a=b-2; // το περιεχόμενο του δείκτη α γίνεται ίσο με 0 *c=b+3; // ομοιως γινεται ισο με 5 b=*a+*c; // το b(αντίγραφο) γίνεται ίσο με 0+5 αλλά η μεταβλητή αυτή δεν επιστρέφεται κάπου οπότε εκτυπωνει 0 2 5 ομοίως τα άλλα.. edit: για τη δεύτερη κλήση test(&b,c,&a); Πριν απο τη κλήση ξέρουμε οτι: a=0,b=2,c=5 οποτε μεσα στη test: *a=b-2; // το περιεχομενο του δεικτη α δηλαδή του b γίνεται ίσο με c-2=3 *c=b+3; // το περιεχομενο του δεικτη c δηλαδή του a γίνεται ίσο με c+3=8 b=*a+*c; //γενικά αυτό δεν έχει και πολύ νόημα απο τι κατάλαβες καθώς ναι μεν έχουμε άθροισμα 11 αλλα δεν το κάνουμε κάτι οπότε μετά θα εκτυπώσει: 8 3 5 Πρέπει να ξεκαθαρίσεις της έννοιες διεύθυνση μεταβλητής και περιεχόμενο μεταβλητής!
vellamos_power Δημοσ. 14 Σεπτεμβρίου 2010 Μέλος Δημοσ. 14 Σεπτεμβρίου 2010 δηλαδη στην δευτερη σειρα το α εχει θεση 8 και οχι τιμη 8.σε καθε εκτυπωση τα προηγουμενα αποτελεσματα μενουν η μηδενιζονται?
Technology fan Δημοσ. 14 Σεπτεμβρίου 2010 Δημοσ. 14 Σεπτεμβρίου 2010 δηλαδη στην δευτερη σειρα το α εχει θεση 8 και οχι τιμη 8.σε καθε εκτυπωση τα προηγουμενα αποτελεσματα μενουν η μηδενιζονται? θεση 8 τι εννοείς? Γιατί να μηδενιστούν?? έχεις κάπου α=0,β=0,c=0 ?
vellamos_power Δημοσ. 14 Σεπτεμβρίου 2010 Μέλος Δημοσ. 14 Σεπτεμβρίου 2010 ευχαριστω πολυ τωρα καταλαβα τι παζει με αυτο.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.