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

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

Δημοσ.

καλησπερα και παλι!!! εχω προβλημα!!! μου εχουν δωσει το εξης προγραμμα

#include <stdio.h>

 

void makeDouble(int y)

{

y = y * 2;

}

 

main () {

int x;

printf("Dwse ari8mo");

scanf("%d", &x);

makeDouble(x);

printf("H nea timi tis metablitis einai %d", x);

}

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

οσο και αν ψαχνω δεν μπορω να βρω τι φταει....

Δημοσ.

Είναι δηλωμένη σαν void, δλδ η συνάρτηση δεν επιστρέφει τίποτα όταν καλείται, απλώς κάνει τον υπολογισμό.

Πάντως αν σκαλώνεις σε τέτοια προβλήματα, ίσως θα έπρεπε να διαβάσεις λίγο καλύτερα τη θεωρία... :rolleyes:

Δημοσ.

Είναι δηλωμένη σαν void, δλδ η συνάρτηση δεν επιστρέφει τίποτα όταν καλείται, απλώς κάνει τον υπολογισμό.

Πάντως αν σκαλώνεις σε τέτοια προβλήματα, ίσως θα έπρεπε να διαβάσεις λίγο καλύτερα τη θεωρία... :rolleyes:

ευχαριστω. η αληθεια ειναι οτι δεν τα ξερω καλα

Δημοσ.

Εκτός αυτού, μπορείς και μέσω void συνάρτηση να πειράξεις μια μεταβλητή που βρίσκεται στην main παιρνόντας και πειράζοντας την διεύθυνση μνήμης της μεταβλητής.

Δημοσ.

Εκτός αυτού, μπορείς και μέσω void συνάρτηση να πειράξεις μια μεταβλητή που βρίσκεται στην main παιρνόντας και πειράζοντας την διεύθυνση μνήμης της μεταβλητής.

 

Η κοπελιά σκάλωσε σε πρόβλημα τύπου "γιατί μια void συνάρτηση δεν επιστρέφει τιμή" κι εσύ της λες για pointers;

 

:P

Δημοσ.

οσο και αν ψαχνω δεν μπορω να βρω τι φταει....

 

Φταίει το ότι κατ' αρχήν υποθέτεις πως θα έπρεπε να δουλέψει, κάτι που δε σε βάζει στο σωστό mindset, και ότι η εκφώνηση δεν είναι και η πιο βοηθητική. Προφανώς η συνάρτηση όντως διπλασιάζει την τιμή της παραμέτρου που εισάγαμε (αφού γράφει επι 2 και αυτήν της περνάμε). Πιο σωστό θα ήταν να σκεφτείς γιατί δεν διπλασιάζεται το περιεχόμενο της μεταβλητής x.

 

Φαντάσου ότι ο κώδικας έλεγε

 

>void makeDouble(int y)
{
int TreisLalounKaiDyoXoreyoun = y * 2;
}

 

Αυτό προφανώς δε θα περίμενες να δουλέψει κατά τα λεγόμενα της εκφώνησης, επειδή θέτει την τιμή μιας μεταβλητής η οποία δεν έχει καμία σχέση με οποιοδήποτε άλλο μέρος του προγράμματος (είναι local στη function).

 

Βοηθάει αυτό;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...