Μετάδοση ενός πίνακα σε μια συνάρτηση C ++

Passing An Array Function C



Ένας πίνακας είναι μια ομάδα στοιχείων του ίδιου τύπου δεδομένων. Πολλές συναρτήσεις εκτελούνται σε πίνακες είτε στο κύριο πρόγραμμα είτε εκτός αυτού, στις συναρτήσεις. Στην C ++, στην περίπτωση των συναρτήσεων, πρέπει να τις περάσουμε. Αυτό γίνεται μέσω παραμέτρων ως ορίσματα. Αυτά τα ορίσματα μπορεί να έχουν διαφορετικούς τρόπους, είτε σημαντικούς πίνακες είτε μέσω του πίνακα δείκτη. Σε αυτό το σεμινάριο, θα καλύψουμε μερικές σημαντικές πτυχές της μεταφοράς πίνακα χρησιμοποιώντας διαφορετικές παραμέτρους των συναρτήσεων.

Σύνταξη

[ΕΠΙΣΤΡΟΦΗτύπος] [όνομα τουλειτουργία] (δεδομένατύποςόνομα πίνακα[πίνακαςΜέγεθος])

{

λειτουργίασώμα

}

Παράδειγμα 1

Εξετάστε ένα παράδειγμα στο οποίο πρέπει να εκτυπώσουμε τα σήματα των μαθητών στο πρόγραμμα C ++. Αυτή η εκτύπωση θα ληφθεί σε ξεχωριστή λειτουργία και όχι στο κύριο πρόγραμμα. Αντίθετα, θα λάβουμε εισόδους στο κύριο πρόγραμμα και θα μεταφέρουμε αυτές τις τιμές στη συνάρτηση ως παράμετρο. Εξετάστε τη λειτουργία. Στην παράμετρο του, υπάρχει μια μεταβλητή τύπου δεδομένων πίνακα που θα δέχεται τις τιμές ενός πίνακα. Ο πλήρης πίνακας δηλώνεται εδώ. Τα σημάδια θα εμφανιστούν με τη βοήθεια του βρόχου for. Όπως και στους πίνακες, χρειαζόμαστε βρόχους για να πάρουμε εκτύπωση από αυτούς.









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



Απεικόνιση(σημάδια)?

Το όρισμα στην παράμετρο υποδηλώνει τη διεύθυνση μνήμης του πίνακα. Στην παράμετρο της κεφαλίδας της συνάρτησης, το int m [7] μετατρέπεται σε int *m. Αυτό περιλαμβάνει την ίδια διεύθυνση με τον αρχικό πίνακα. Όταν χρησιμοποιούμε το m [5] στο σώμα της συνάρτησης, πρόκειται να χειριστούμε τον αρχικό πίνακα.





Κενή οθόνη(int m[7] )

Στο λειτουργικό σύστημα Linux, η λήψη εξόδου μέσω ενός τερματικού απαιτεί ορισμένες προϋποθέσεις για την εγκατάσταση. Χρειάζεται μεταγλωττιστή για να μεταγλωττίσει και στη συνέχεια να εκτελέσει τον κώδικα στο τερματικό της γραμμής εντολών. Το G ++ χρησιμοποιείται στο C ++ για τη μεταγλώττιση.



$g ++ κωδικός3 κωδικός3.γ

$./κωδικός 3

Όπου –o χρησιμοποιείται για την αποθήκευση της εξόδου από το αρχείο προέλευσης στο αρχείο εξόδου.

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

Παράδειγμα 2

Ένα άλλο παράδειγμα σχετικά με τον πίνακα που περνά μέσα από την παράμετρο είναι η μετάδοση ενός πολυδιάστατου πίνακα στη συνάρτηση. Ένας δισδιάστατος πίνακας (2d) χρησιμοποιείται εδώ. Στην κύρια συνάρτηση, πρέπει να ξεκινήσουμε έναν πίνακα.

Int array[σειρά][στήλη]

Η προετοιμασία 2d array περιλαμβάνει σειρά και στήλη. Και η σειρά τους πρέπει να διατηρηθεί καθ 'όλη τη διάρκεια του προγράμματος. Ο πίνακας 2d αρχικοποιείται με δύο αριθμούς στις αγκύλες. Όπως έχουμε περιγράψει 2 στήλες στην αρχικοποίηση.

Απεικόνιση(σε ένα)?

Θα χρησιμοποιήσουμε μόνο το όνομα του πίνακα στην παράμετρο ως όρισμα.

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

Κενή οθόνη(int n[][2] )

Είναι υποχρεωτική η αναφορά του αριθμού των στηλών. Σε σύγκριση, δεν είναι απαραίτητο στην περίπτωση των σειρών. Αυτός είναι ο λόγος για τον οποίο αφήσαμε τις παρενθέσεις γραμμών κενές εδώ, καθώς χρησιμοποιούμε το βρόχο για την εμφάνιση των αποτελεσμάτων. Αλλά στην περίπτωση ενός δισδιάστατου πίνακα, χρησιμοποιούμε ένα ένθετο για βρόχο. Περιέχει δύο δηλώσεις για 2 μεταβλητές.

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

Παράδειγμα 3

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

Ξεκινώντας από το κύριο πρόγραμμα, ένας πίνακας αρχικοποιείται με τις τιμές.

μέσος = getAverage(ισορροπία,5)?

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

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

Τώρα θα δούμε την έξοδο. Αυτή η τιμή είναι ορατή μέσω της εικόνας που λαμβάνεται από τη συνάρτηση.

Παράδειγμα 4

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

printMax(arr1)?

printMax(arr2)?

όπου printMax είναι το όνομα της συνάρτησης και arr είναι ο πίνακας. Το αποτέλεσμα δεν θα επιστρέψει από τη συνάρτηση και εμφανίζεται εκεί. Για βρόχο θα υπολογίσει τον μέγιστο αριθμό και στους δύο πίνακες. Το if-statement χρησιμοποιείται μέσα στον βρόχο for. Η κεφαλίδα της συνάρτησης είναι:

void printMax(int arr[5])

Καθώς και οι δύο πίνακες περιέχουν διαφορετικές τιμές, και τα δύο αποτελέσματα θα είναι διαφορετικά.

Παράδειγμα 5

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

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

Int sum1(int tmp[5])?

Int sum2(int tmp[])?

Int sum3(int*tmp)?

Αυτοί οι τρεις πίνακες απεικονίζουν ότι οι πίνακες μπορούν να περάσουν έχοντας αυτές τις παραμέτρους στη συνάρτηση.

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

Σύνολο = άθροισμα1(εκπτώσεις)?

Σύνολο = άθροισμα2(εκπτώσεις)?

Σύνολο = sume3(εκπτώσεις)?

Η έξοδος εμφανίζεται στην κύρια συνάρτηση, οπότε μια μεταβλητή δηλώνεται ότι δέχεται την τιμή που επιστρέφει η συνάρτηση. Και από τις τρεις κλήσεις συνάρτησης, μπορείτε να δείτε ότι εδώ οι παράμετροι είναι ίδιες. Κάθε πίνακας περιέχει μόνο το όνομα ενός πίνακα. Αλλά οι παράμετροι της συνάρτησης που δέχεται τον πίνακα είναι διαφορετικές.

Το εσωτερικό σώμα και των τριών συναρτήσεων είναι το ίδιο, καθώς το άθροισμα όλων των αριθμών υπολογίζεται από τη χρήση του βρόχου For. Η μεθοδολογία και οι τιμές του πίνακα είναι οι ίδιες. μόνο υπάρχει διάκριση μεταξύ των παραμέτρων των συναρτήσεων. Ως εκ τούτου, έχει αποδειχθεί ότι μπορούμε είτε να χρησιμοποιήσουμε διαφορετικές μεθόδους για να δεχτούμε έναν πίνακα είτε να εκτελέσουμε την ίδια λειτουργικότητα, και η απάντηση είναι η ίδια. Μπορούμε να το επιβεβαιώσουμε ελέγχοντας την έξοδο. Χρησιμοποιώντας την ίδια διαδικασία μεταγλώττισης, θα έχουμε την έξοδο που εμφανίζεται στην παρακάτω προσαρτημένη εικόνα.

Μπορείτε να δείτε ότι η απάντηση είναι η ίδια και για τις τρεις συναρτήσεις που χρησιμοποιούνται.

συμπέρασμα

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