User Tools

Site Tools


qna:misc:arrays:argument

Χρήση πίνακα ως παράμετρο ή όρισμα

Όταν σε μία συνάρτηση χρησιμοποιείτε έναν πίνακα ως παράμετρο δίπλα του πρέπει να ορίσετε και τις διαστάσεις που έχει. Δείτε ένα υπόδειγμα δήλωσης:

void testFunction(double myArrayΑ[5][5]);

Οι διαστάσεις δίπλα στον πίνακα επιτρέπουν στον compiler να παράγει την κατάλληλη γλώσσα μηχανής. Και χρειάζονται ακριβώς για τον ίδιο λόγο χρειάζονται κατά τη δήλωση ενός απλού πίνακα. Δείτε εδώ:

double myArrayB[5][5];

Άρα και στις δύο περιπτώσεις ορίζεται ένας πίνακας 5×5 ο οποίος έχει double στοιχεία και οι δείκτες σε κάθε διάσταση έχουν επιτρεπτές τιμές 0 έως και 4.

Άρα όταν αυτό τον πίνακα που έχει δοθεί ως παράμετρος σε μια συνάρτηση, θέλετε να τον χρησιμοποιήσετε δεν αλλάζει κάτι από τη χρήση ενός άλλου πίνακα.

Είτε χρησιμοποιείτε αυτόν ως παράμετρο σε μία άλλη συνάρτηση, είτε καλείτε αυτή τη συνάρτηση, αρκεί απλά το όνομά του. Οι απαιτούμενες διαστάσεις είναι δηλωμένες στη δήλωση ή τον ορισμό της συνάρτησης την οποία καλείτε.

Εάν καλείτε αυτή τη συνάρτηση με έναν δεδομένο και κατάλληλο πίνακα Arr1 απλά γράφετε:

testFunction( Arr1 );

ενώ ένα μέσα στην testFunction θέλετε να καλέσετε μια άλλη συνάρτηση otherTestFunction απλά γράφετε:

void testFunction(double myArrayΑ[5][5]) {
    // κάποιος κώδικας εδώ
    otherTestFunction( myArrayA );
    // και εδώ ο υπόλοιπος κώδικας
}

Ποτέ δεν πρέπει να χρησιμοποιείτε τον πίνακα δίνοντας δίπλα τις διαστάσεις του! Όπως φαίνεται στο ακόλουθο παράδειγμα:

otherTestFunction( myArrayA[5][5] ); // <<<<< ΛΑΘΟΣ!!!

και αυτό για δύο λόγους (και τα δύο λάθη, ποτέ δεν κάνουν ένα σωστό).

  1. Επειδή είναι σαν να δίνετε μόνο ένα στοιχείο του πίνακα myArrayA εκεί που κώδικας περιμένει ολόκληρο πίνακα. Αυτό μπορεί να οδηγήσει τον κώδικά σας στο να σταματήσει να εκτελείται και να επιστρέφει ένα ακατανόητο και μεγάλο αριθμό ως κωδικό σφάλματος.
  1. Επιπλέον αυτό το στοιχείο (εδώ το [5][5]) είναι και έξω από τα όρια του πίνακα, αφού αυτός στο παράδειγμά μας είναι δηλωμένος ως 5×5. Αυτή και μόνη η αναφορά (είτε για να διαβαστεί, είτε για να αλλάξει η τιμή του) σε ένα στοιχείο εκτός πίνακα μπορεί να έχει το ίδιο αποτέλεσμα με το προηγούμενο λάθος. Δηλαδή πορεί να οδηγήσει τον κώδικά σας στο να σταματήσει να εκτελείται και να επιστρέφει ένα ακατανόητο και μεγάλο αριθμό ως κωδικό σφάλματος.
qna/misc/arrays/argument.txt · Last modified: 2021/04/07 20:21 by xallos