jhanidis Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 καλημέρα!θα ήθελα ν μου εξηγήσετε ποια η διαφορα δήλωσης πίνακα σε C με π.χ #define Ν 10 και int N[10] και επίσης αν θέλω να δηλώσω ένα δισδιάστατο πίνακα πώς τον δηλώνω? και τέλος πώς μπορώ να δηλώσω αυτόν τον δισδιάστατο ως καθολική μεταβλητή? ευχαριστώ
V.I.Smirnov Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Tα #define Ν 10 και int N[10] είναι τελείως διαφορετικά πράγματα. Το #define Ν 10 είναι μια οδηγία στον compiler που υποδηλώνει ότι κατά την μεταγλώτιση όπου υπάρχει το N θα το αντικαθιστά με 10. Το int N[10] ορίζει έναν πίνακα ακεραίων με 10 στοιχεία. Ένας δισδιάστατος πίνακας (στατικός) πίνακας ορίζεται όπως και ένας μονοδιάστατος καθορίζοντας το πλήθος των στοιχείων του σε κάθε διάσταση. Π.χ. int array[10][20][30][40] είναι ένας πίνακας 4 διαστάσεων με 10,20,30,40 σε κάθε διάσταση αντίστοιχα. Για να είναι καθολική μεταβλητή πρέπει να οριστεί έξω από τις συναρτήσεις του κυρίου προγράμματος, στην αρχή του. -
jhanidis Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 ευχαριστώ πολύ για την απάντηση!και θα ήθελα επίσης αν μπορείτε να μου εξηγήσετε τι ακριβώς είναι οι συμβολοσειρές,strings και σε τι βοηθάνε..ευχαριστώ και πάλι!
Επισκέπτης Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων και αριθμών φυσικά.Στη C μπορεί να το δείς ως ένα πίνακα χαρακτήρων δηλαδή:char onoma[15].Αυτός είναι ένας πίνακας χαρακτήρων(string) και όπως καταλαβαίνεις έχει πολλές εφαρμογές.Για παράδειγμα μπορείς να ζητήσεις απο το χρήστη το όνομά του και να το αποθηκεύσεις σε ένα string το οποίο μετά μπορείς να χρησιμοποιήσεις οπουδήποτε μέσα στο προγραμμά σου.Ελπίζω να βοήθησα.
thanos713 Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Επίσης κάθε χαρακτήρας της συμβολοσειράς (άμα είναι ASCII) δεσμεύει ένα byte και κάθε συμβολοσειρά τελειώνει με τον χαρακτήρα '\0'.
jhanidis Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 σας ευχαριστώ όλους για τις απαντήσεις σας! τώρα έχω ακόμη μια ερώτηση για c. όταν έχω δηλώσει έναν πίνακα πχ table[10][10] ως καθολική μεταβλητή κ θέλω ν διαβάζει ακεραίους για αυτόν τον πίνακα αλλά μέσα σε μια συνάρτηση και να στέλνει μετά τον γεμάτο πίνακα στο κυρίως πρόγραμμα, τι συνάρτηση πρέπει να χρησιμοποιήσω void ή int? και αν χρησιμοποιήσω int, στο return(...) τι πρέπει να επιστρέφει?? Ευχαριστώ!
thanos713 Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Δεν υπάρχει λόγος να έχεις τον πίνακα ως όρισμα ούτε και ως επιστρεφόμενη τιμή, διότι μπορεί από όλο το πρόγραμμα σου να τροποποιηθεί χωρίς να είναι όρισμα... Τον χρησιμοποιείς επί τόπου, σαν να είναι μέσα στην συνάρτηση, απλώς όταν πας σε άλλη συνάρτηση έχει πάλι την ίδια τιμή...
jhanidis Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 δηλαδή δε χρειάζεται η συνάρτηση να επιστρέφει τα περιεχόμενα του πινακα?όταν διάβαζει τις τιμές μέσω τησ συνάρτησης,έμπαιναν και στο κυρίως πρόγραμμα? και ποια συνάρτηση να χρησιμοποιήσω void ή int?
thanos713 Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Εσύ θα μου απαντήσεις... Αφού όπως σου είπα μία οποιαδήποτε συνάρτηση μπορεί και τροποποιεί τα δεδομένα του πίνακα, τι πιστεύεις ότι θα χρειάζεται;
dop Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Το #define Χ Υ δηλώνει ένα macro το οποίο δίνεται στον preprocessor (και όχι στον compiler). Όπου ο preprocessor βλέπει X, το αντικαθιστά με Y. Ξανατονίζω, δεν έχει καμία σχέση με τον compiler, είναι ένα βήμα που γίνεται ΠΡΙΝ το compilation.
jhanidis Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 α!οκ!ευχαριστώ!άρα καλύτερα να χρησιμοποιήσω τη void παρά την int? αλλιώς στην int πρέπει να αφήσω στην παρένθεση κενό? return() ? και ηλικία στο προφιλ δε φαντάζομαι να είναι πραγματική????????
thanos713 Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Είσαι ωραίος, μόνο που δεν υπάρχει return στην void για αυτονόητους λόγους, δεν επιστρέφει τίποτα, οπότε γιοκ return . Σε εμένα λες για την ηλικία;
jhanidis Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 οκ! τ return για την int το έλεγα. ναι!γιατί 14 χρονών μου φαίνεται λίγο περίεργο..εγώ στα 14 έπαιζα fifa, δεν έφτιαχνα προγράμματα! χαχα!
thanos713 Δημοσ. 10 Νοεμβρίου 2010 Δημοσ. 10 Νοεμβρίου 2010 Α ΟΧΙ! Άμα ήθελες int θα έβαζες return 0 ώστε να ξέρεις ότι αυτή η συνάρτηση ολοκληρώθηκε με επιτυχία. (Δεν ξέρω άμα εννοείται από πολλούς compilers το 0.) Φιλική συμβουλή, όποτε δεν τροποποιείς δεδομένα κάνε τις συναρτήσεις void... ΥΣ. Αληθινότατη είναι η ηλικία, συμμετέχω φέτος και για πρώτη φορά στον ΠΔΠ.
jhanidis Δημοσ. 10 Νοεμβρίου 2010 Μέλος Δημοσ. 10 Νοεμβρίου 2010 μπράβο!!να σαι καλά!κ καλή επιτυχία!αν θες να κάνεις εξάσκηση ν σ δίνω τις εργασίες μου να τις κάνεις εσύ!! χαχα!! )
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.