Προς το περιεχόμενο

προβλημα με την C


vellamos_power

Προτεινόμενες αναρτήσεις

Δημοσ.

#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

το προβλημα ειναι οτι δεν καταλαβαινω πως βγαινουν οι αριθμοι αυτοι.την πρωτη σειρα την βγαζω αλλα απο κει και μετα δεν μπορω να τα καταλαβω.

Δημοσ.

Ας πάρω τη πρωτη εκτυπωση 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

 

 

Πρέπει να ξεκαθαρίσεις της έννοιες διεύθυνση μεταβλητής και περιεχόμενο μεταβλητής!

Δημοσ.
δηλαδη στην δευτερη σειρα το α εχει θεση 8 και οχι τιμη 8.σε καθε εκτυπωση τα προηγουμενα αποτελεσματα μενουν η μηδενιζονται?

 

θεση 8 τι εννοείς?

 

Γιατί να μηδενιστούν?? έχεις κάπου α=0,β=0,c=0 ?

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...