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

δηλωση πινακα σε C


jhanidis

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

Δημοσ.

καλημέρα!θα ήθελα ν μου εξηγήσετε ποια η διαφορα δήλωσης πίνακα σε C με

π.χ #define Ν 10 και int N[10]

και επίσης αν θέλω να δηλώσω ένα δισδιάστατο πίνακα πώς τον δηλώνω?

και τέλος πώς μπορώ να δηλώσω αυτόν τον δισδιάστατο ως καθολική μεταβλητή?

ευχαριστώ

Δημοσ.

#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 σε κάθε διάσταση αντίστοιχα.

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

 

-

Δημοσ.

ευχαριστώ πολύ για την απάντηση!και θα ήθελα επίσης αν μπορείτε να μου εξηγήσετε τι ακριβώς είναι οι συμβολοσειρές,strings και σε τι βοηθάνε..ευχαριστώ και πάλι!

Δημοσ.

Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων και αριθμών φυσικά.Στη C μπορεί να το δείς ως ένα πίνακα χαρακτήρων δηλαδή:char onoma[15].Αυτός είναι ένας πίνακας χαρακτήρων(string) και όπως καταλαβαίνεις έχει πολλές εφαρμογές.Για παράδειγμα μπορείς να ζητήσεις απο το χρήστη το όνομά του και να το αποθηκεύσεις σε ένα string το οποίο μετά μπορείς να χρησιμοποιήσεις οπουδήποτε μέσα στο προγραμμά σου.Ελπίζω να βοήθησα.

Δημοσ.

Επίσης κάθε χαρακτήρας της συμβολοσειράς (άμα είναι ASCII) δεσμεύει ένα byte και κάθε συμβολοσειρά τελειώνει με τον χαρακτήρα '\0'.

Δημοσ.

σας ευχαριστώ όλους για τις απαντήσεις σας!

τώρα έχω ακόμη μια ερώτηση για c.

όταν έχω δηλώσει έναν πίνακα πχ table[10][10] ως καθολική μεταβλητή

κ θέλω ν διαβάζει ακεραίους για αυτόν τον πίνακα αλλά μέσα σε μια συνάρτηση και να στέλνει μετά τον γεμάτο πίνακα στο κυρίως πρόγραμμα, τι συνάρτηση πρέπει να χρησιμοποιήσω void ή int?

και αν χρησιμοποιήσω int, στο return(...) τι πρέπει να επιστρέφει??

Ευχαριστώ!

Δημοσ.

Δεν υπάρχει λόγος να έχεις τον πίνακα ως όρισμα ούτε και ως επιστρεφόμενη τιμή, διότι μπορεί από όλο το πρόγραμμα σου να τροποποιηθεί χωρίς να είναι όρισμα... Τον χρησιμοποιείς επί τόπου, σαν να είναι μέσα στην συνάρτηση, απλώς όταν πας σε άλλη συνάρτηση έχει πάλι την ίδια τιμή...

Δημοσ.

δηλαδή δε χρειάζεται η συνάρτηση να επιστρέφει τα περιεχόμενα του πινακα?όταν διάβαζει τις τιμές μέσω τησ συνάρτησης,έμπαιναν και στο κυρίως πρόγραμμα? και ποια συνάρτηση να χρησιμοποιήσω void ή int?

Δημοσ.

Εσύ θα μου απαντήσεις... Αφού όπως σου είπα μία οποιαδήποτε συνάρτηση μπορεί και τροποποιεί τα δεδομένα του πίνακα, τι πιστεύεις ότι θα χρειάζεται;

Δημοσ.

Το #define Χ Υ δηλώνει ένα macro το οποίο δίνεται στον preprocessor (και όχι στον compiler). Όπου ο preprocessor βλέπει X, το αντικαθιστά με Y.

 

Ξανατονίζω, δεν έχει καμία σχέση με τον compiler, είναι ένα βήμα που γίνεται ΠΡΙΝ το compilation.

Δημοσ.

α!οκ!ευχαριστώ!άρα καλύτερα να χρησιμοποιήσω τη void παρά την int? αλλιώς στην int πρέπει να αφήσω στην παρένθεση κενό? return() ?

και ηλικία στο προφιλ δε φαντάζομαι να είναι πραγματική????????

Δημοσ.

Είσαι ωραίος, μόνο που δεν υπάρχει return στην void για αυτονόητους λόγους, δεν επιστρέφει τίποτα, οπότε γιοκ return :P . Σε εμένα λες για την ηλικία;

Δημοσ.

οκ! τ return για την int το έλεγα.

ναι!γιατί 14 χρονών μου φαίνεται λίγο περίεργο..εγώ στα 14 έπαιζα fifa, δεν έφτιαχνα προγράμματα! χαχα! :-)

Δημοσ.

Α ΟΧΙ! Άμα ήθελες int θα έβαζες return 0 ώστε να ξέρεις ότι αυτή η συνάρτηση ολοκληρώθηκε με επιτυχία. (Δεν ξέρω άμα εννοείται από πολλούς compilers το 0.) Φιλική συμβουλή, όποτε δεν τροποποιείς δεδομένα κάνε τις συναρτήσεις void...

 

ΥΣ. Αληθινότατη είναι η ηλικία, συμμετέχω φέτος και για πρώτη φορά στον ΠΔΠ.

Δημοσ.

μπράβο!!να σαι καλά!κ καλή επιτυχία!αν θες να κάνεις εξάσκηση ν σ δίνω τις εργασίες μου να τις κάνεις εσύ!! χαχα!! :-))

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

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

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