Τι σημαίνει int argc, char *argv[];

Σε πολλά C++ IDE's και μεταγλωττιστές, όταν δημιουργείται η κύρια συνάρτηση για εσάς, μοιάζει κάπως έτσι:

int main(int argc, char *argv[])

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

int main()

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

Λύση

Τα argv και argc είναι ο τρόπος με τον οποίο τα ορίσματα της γραμμής εντολών μεταβιβάζονται στην main() στη C και τη C++.

Το argc θα είναι ο αριθμός των συμβολοσειρών στις οποίες δείχνει το argv. Αυτό θα είναι (στην πράξη) το 1 συν τον αριθμό των επιχειρημάτων, καθώς σχεδόν όλες οι υλοποιήσεις θα προτάξουν το όνομα του προγράμματος στον πίνακα.

Οι μεταβλητές ονομάζονται argc (argument count) και argv (argument vector) κατά σύμβαση, αλλά μπορεί να τους δοθεί οποιοδήποτε έγκυρο αναγνωριστικό: int main(int num_args, char** arg_strings) είναι εξίσου έγκυρο.

Μπορούν επίσης να παραλειφθούν εντελώς, δίνοντας int main(), αν δεν σκοπεύετε να επεξεργαστείτε τα ορίσματα της γραμμής εντολών.

Δοκιμάστε το ακόλουθο πρόγραμμα:


#include 

int main(int argc, char** argv) {
    std::cout 
Σχόλια (11)

argc είναι ο αριθμός των επιχειρημάτων που περνάνε στο πρόγραμμά σας από τη γραμμή εντολών και argv είναι ο πίνακας των επιχειρημάτων.

Μπορείτε να κάνετε βρόχο στα ορίσματα γνωρίζοντας τον αριθμό τους ως εξής:

for(int i = 0; i < argc; i++)
{
    // argv[i] is the argument at index i
}
Σχόλια (0)

Οι παράμετροι στο main αντιπροσωπεύουν τις παραμέτρους της γραμμής εντολών που δόθηκαν στο πρόγραμμα κατά την εκκίνησή του. Η παράμετρος argc αναπαριστά τον αριθμό των ορίων της γραμμής εντολών και η char *argv[] είναι ένας πίνακας συμβολοσειρών (δείκτες χαρακτήρων) που αναπαριστούν τα επιμέρους ορίσματα που παρέχονται στη γραμμή εντολών.

Σχόλια (2)