Argc και Argv C++

Argc Kai Argv C



Κατά τη σύνταξη προγραμμάτων C++, όλοι γνωρίζουμε ότι η συνάρτηση 'main()' θεωρείται πολύ σημαντική αφού δεν μπορούμε να μεταγλωττίσουμε το πρόγραμμά μας εάν λείπει η υλοποίηση αυτής της συνάρτησης. Όπως όλες οι άλλες συναρτήσεις στη C++, η συνάρτηση 'main()' είναι επίσης ικανή να δέχεται ορίσματα. Ωστόσο, η διαφορά μεταξύ της μετάδοσης ορισμάτων στη συνάρτηση 'main()' από τη μεταβίβαση ορισμάτων στις άλλες συναρτήσεις είναι ότι πρέπει να περάσετε τα ορίσματα μέσω της γραμμής εντολών στην πρώτη περίπτωση. Αυτό συμβαίνει επειδή η ίδια η συνάρτηση 'main()' είναι η συνάρτηση οδηγού, γι' αυτό καμία άλλη συνάρτηση δεν είναι ικανή να την καλέσει και να της μεταβιβάσει ορίσματα. Σε αυτό το άρθρο, θα συζητήσουμε τις δύο παραμέτρους της συνάρτησης 'main()', δηλαδή 'argc' και 'argv' στη C++ στο Ubuntu 20.04.

Τι είναι το Argc και το Argv στη C++ στο Ubuntu 20.04;

Η παράμετρος 'argc' αναφέρεται στο πλήθος ορισμάτων, ενώ το 'argv' αναφέρεται σε έναν πίνακα χαρακτήρων που κρατά όλα τα ορίσματα που μεταβιβάζονται στη συνάρτηση 'main()' μέσω της γραμμής εντολών τη στιγμή της εκτέλεσης ενός προγράμματος στη C++. Εδώ, πρέπει να γνωρίζετε ότι το 'argc' εμφανίζει πάντα τον αριθμό των ορισμάτων ως '1' περισσότερο από τον πραγματικό αριθμό των ορισμάτων που έχουν περάσει. Αυτό συμβαίνει επειδή το όνομα του αρχείου αντικειμένου υπολογίζεται επίσης ως όρισμα γραμμής εντολών. Μπορείτε να μεταβιβάσετε τα ορίσματα της γραμμής εντολών που ανήκουν σε οποιονδήποτε τύπο δεδομένων στη συνάρτηση 'main()'. Το μόνο που χρειάζεται να προσέξετε είναι αυτές οι παράμετροι να αναφέρονται στο πρωτότυπο της συνάρτησής σας 'main()' εάν θέλετε να έχετε πρόσβαση σε αυτές μέσα σε αυτήν. Ωστόσο, η συνάρτηση 'main()' μπορεί να λειτουργήσει τέλεια χωρίς αυτές τις δύο παραμέτρους. Αυτό θα συζητηθεί στην επόμενη ενότητα αυτού του άρθρου, μετά από την οποία θα προχωρήσουμε στη χρήση αυτών των δύο παραμέτρων στη C++ στο Ubuntu 20.04.

Η κύρια συνάρτηση χωρίς Argc και Argv στη C++:

Πρώτα απ 'όλα, θα θέλαμε να σας πούμε ότι η συνάρτηση 'main()' στη C++ μπορεί να λειτουργήσει τέλεια ακόμη και χωρίς τη χρήση των παραμέτρων 'argc' και 'argv'. Αυτό απεικονίζεται στο ακόλουθο πρόγραμμα C++:









Έχουμε μια απλή συνάρτηση 'main()' σε αυτό το πρόγραμμα χωρίς κανένα όρισμα. Μέσα σε αυτήν τη συνάρτηση 'main()', εκτυπώνουμε μόνο ένα δείγμα μηνύματος στο τερματικό.



Στη συνέχεια, μεταγλωττίσαμε αυτό το βασικό πρόγραμμα C++ με τη βοήθεια της εντολής που αναφέρεται παρακάτω:





$ g++ CommandLine.cpp –o CommandLine

Στη συνέχεια, εκτελέσαμε αυτό το πρόγραμμα εκτελώντας την ακόλουθη εντολή:



$ . / Γραμμή εντολών

Η έξοδος αυτού του απλού προγράμματος C++ φαίνεται στην παρακάτω εικόνα:

Εκτέλεση προγράμματος C++ χωρίς να περάσετε κανένα όρισμα γραμμής εντολών:

Τώρα, θα προσπαθήσουμε να εφαρμόσουμε ένα πρόγραμμα C++ στο οποίο η συνάρτηση 'main()' είναι ικανή να δέχεται τις παραμέτρους 'argc' και 'argv', ωστόσο, δεν θα περάσουμε αυτά τα ορίσματα σε αυτό κατά την εκτέλεση αυτού του προγράμματος από το τερματικό. Το εν λόγω πρόγραμμα C++ φαίνεται στην παρακάτω εικόνα:

Σε αυτό το πρόγραμμα C++, η συνάρτηση 'main()' μας είναι ικανή να δέχεται παραμέτρους 'argc' και 'argv'. Ωστόσο, επειδή δεν σκοπεύαμε να μεταβιβάσουμε αυτές τις τιμές σε αυτό στο συγκεκριμένο παράδειγμα, έχουμε εξισώσει σκόπιμα το 'argc' σε '0', έτσι ώστε όταν προσπαθούμε να εκτυπώσουμε την τιμή του, να μην επιστρέψει καμία τιμή σκουπιδιών. Μετά από αυτό, έχουμε εκτυπώσει την τιμή της παραμέτρου 'argc' στο τερματικό. Στη συνέχεια, χρησιμοποιήσαμε έναν βρόχο 'για' για την εκτύπωση όλων των ορισμάτων της γραμμής εντολών στο τερματικό.

Έχουμε μεταγλωττίσει αυτόν τον κώδικα χρησιμοποιώντας την εντολή που φαίνεται παρακάτω:

$ g++ CommandLine.cpp –o CommandLine

Στη συνέχεια, όταν θέλαμε να εκτελέσουμε αυτό το πρόγραμμα, δεν του δώσαμε ορίσματα γραμμής εντολών, όπως μπορείτε να δείτε από την ακόλουθη εντολή:

$ . / Γραμμή εντολών

Από την έξοδο αυτού του προγράμματος C++ που φαίνεται στην παρακάτω εικόνα, μπορείτε να δείτε ότι δεν διαβιβάστηκαν ορίσματα γραμμής εντολών σε αυτήν τη συνάρτηση, εξαιτίας των οποίων το πλήθος ορισμάτων ήταν '0' και δεν εκτυπώθηκαν ορίσματα στο τερματικό επειδή ο πίνακας χαρακτήρων ' argv» ήταν επίσης άδειο.

Εκτέλεση προγράμματος C++ με ορίσματα γραμμής εντολών τύπου Integer:

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

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

Μεταγλωττίσαμε ξανά τον τροποποιημένο κώδικα χρησιμοποιώντας την εντολή που φαίνεται παρακάτω:

$ g++ CommandLine.cpp –o CommandLine

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

$ . / Γραμμή εντολών 1 δύο 3

Σημαίνει ότι έχουμε περάσει τρία ορίσματα γραμμής εντολών τύπου ακέραιου σε αυτό το πρόγραμμα C++ κατά την εκτέλεση του, δηλ. 1, 2 και 3.

Η έξοδος αυτού του τροποποιημένου προγράμματος φαίνεται στην παρακάτω εικόνα:

Ο συνολικός αριθμός ορισμάτων που επιστρέφονται από αυτό το πρόγραμμα C++ είναι '4', δηλαδή τρία ακέραια ορίσματα που έχουμε μεταβιβάσει + το όνομα του αρχείου αντικειμένου. Αυτό το πρόγραμμα τύπωσε επίσης τα στοιχεία του πίνακα χαρακτήρων 'argv' στο τερματικό, δηλαδή τα πραγματικά ορίσματα ακέραιου τύπου που μεταβιβάστηκαν σε αυτό το πρόγραμμα τη στιγμή της εκτέλεσης, μαζί με το όνομα του προγράμματος.

Εκτέλεση προγράμματος C++ με ορίσματα γραμμής εντολών τύπου χαρακτήρων:

Τώρα, θέλαμε να δούμε αν το ίδιο πρόγραμμα C++ λειτουργεί καλά όταν προσπαθούμε να το εκτελέσουμε περνώντας του ορίσματα γραμμής εντολών τύπου χαρακτήρα. Για αυτό, δεν χρειάστηκε να το τροποποιήσουμε περαιτέρω. Έπρεπε να το εκτελέσουμε μόνο με ορίσματα γραμμής εντολών τύπου χαρακτήρα ως εξής:

$ . / Γραμμή εντολών a b c d e f

Σημαίνει ότι έχουμε περάσει ορίσματα γραμμής εντολών τύπου έξι χαρακτήρων σε αυτό το πρόγραμμα C++ κατά την εκτέλεση του, δηλ. a, b, c, d, e και f.

Η έξοδος που παράγεται ως αποτέλεσμα της μετάδοσης ορισμάτων γραμμής εντολών τύπου χαρακτήρων στο ίδιο πρόγραμμα C++ φαίνεται παρακάτω:

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

Συμπέρασμα:

Αυτό το άρθρο είχε ως στόχο τη συζήτηση των δύο ορισμάτων της γραμμής εντολών, γνωστών και ως παραμέτρων της συνάρτησης 'main()', δηλαδή 'argc' και 'argv'. Μιλήσαμε για τη σημασία αυτών των δύο παραμέτρων αναφέροντας τη χρήση τους. Στη συνέχεια, μοιραστήκαμε μερικά παραδείγματα μαζί σας που απεικόνιζαν τη χρήση των 'argc' και 'argv' στη C++ στο Ubuntu 20.04. Επιπλέον, διευκρινίσαμε επίσης ότι ακόμη και χωρίς τη χρήση αυτών των παραμέτρων, η συνάρτηση 'main()' θα μπορούσε να λειτουργήσει τέλεια. Επομένως, μόλις διαβάσετε αυτό το άρθρο, θα κατανοήσετε πολύ καθαρά τη χρήση των 'argc' και 'argv' στην C++.