Argc ve Argv C++

Argc Ve Argv C



C++ programlarını yazarken “main()” fonksiyonunun çok önemli olduğunu hepimiz biliyoruz çünkü bu fonksiyonun implementasyonu eksikse programımızı derleyemeyiz. C++'daki diğer tüm işlevler gibi, 'main()' işlevi de bağımsız değişkenleri kabul edebilir. Ancak, argümanları “main()” işlevine iletmekten diğer işlevlere argüman iletmek arasındaki fark, önceki durumda argümanları komut satırından iletmeniz gerekmesidir. Böyledir, çünkü 'main()' işlevinin kendisi sürücü işlevidir, bu nedenle başka hiçbir işlev onu çağıramaz ve ona bağımsız değişkenler iletemez. Bu yazıda, Ubuntu 20.04'te C++'da “main()” işlevinin iki parametresini, yani “argc” ve “argv” tartışacağız.

Ubuntu 20.04'te C++'da Argc ve Argv nedir?

'argc' parametresi bağımsız değişken sayısını belirtirken 'argv', C++'da bir program yürütülürken komut satırı aracılığıyla 'main()' işlevine iletilen tüm bağımsız değişkenleri tutan bir karakter dizisini ifade eder. Burada, “argc”nin argüman sayısını her zaman iletilen argümanların gerçek sayısından “1” fazla gösterdiğini bilmeniz gerekir. Bunun nedeni, nesne dosyasının adının da bir komut satırı bağımsız değişkeni olarak sayılmasıdır. Herhangi bir veri tipine ait komut satırı argümanlarını “main()” fonksiyonuna iletebilirsiniz. Dikkat etmeniz gereken tek şey, bu parametrelerin içinden erişmek istiyorsanız, 'main()' işlevinizin prototipinde belirtilmesidir. Ancak, 'main()' işlevi bu iki parametre olmadan mükemmel bir şekilde çalışabilir. Bu, bu makalenin sonraki bölümünde ele alınacak ve ardından bu iki parametrenin Ubuntu 20.04'te C++'da kullanımına geçeceğiz.

C++'da Argc ve Argv Olmadan Ana Fonksiyon:

Öncelikle C++'daki 'main()' fonksiyonunun 'argc' ve 'argv' parametreleri kullanılmadan da mükemmel bir şekilde çalışabileceğini söylemek isteriz. Bu, aşağıdaki C++ programında tasvir edilmiştir:









Bu programda argümansız basit bir “main()” fonksiyonumuz var. Bu “main()” fonksiyonunda, terminalde sadece örnek bir mesaj yazdırıyoruz.



Daha sonra aşağıda belirtilen komut yardımıyla bu temel C++ programını derledik:





$ g++ CommandLine.cpp –o Komut Satırı

Daha sonra aşağıdaki komutu çalıştırarak bu programı çalıştırdık:



$ . / Komut satırı

Bu basit C++ programının çıktısı aşağıdaki resimde gösterilmektedir:

Herhangi bir Komut Satırı Argümanını Geçmeden Bir C++ Programını Çalıştırmak:

Şimdi, “main()” fonksiyonunun “argc” ve “argv” parametrelerini kabul edebildiği bir C++ programı uygulamaya çalışacağız, ancak bu programı yürütürken bu argümanları ona aktarmayacağız. terminal. Söz konusu C++ programı aşağıdaki görselde gösterilmektedir:

Bu C++ programında “main()” fonksiyonumuz “argc” ve “argv” parametrelerini kabul edebilir. Ancak, bu özel örnekte bu değerleri ona aktarmayı düşünmediğimiz için, değerini yazdırmaya çalıştığımızda herhangi bir çöp değeri döndürmemesi için kasıtlı olarak 'argc'yi '0'a eşitledik. Ardından argc parametresinin değerini terminale yazdırdık. Ardından, terminaldeki tüm komut satırı argümanlarını yazdırmak için bir “for” döngüsü kullandık.

Bu kodu aşağıda gösterilen komutu kullanarak derledik:

$ g++ CommandLine.cpp –o Komut Satırı

Ardından, bu programı çalıştırmak istediğimizde, aşağıdaki komuttan da görebileceğiniz gibi, herhangi bir komut satırı argümanı iletmedik:

$ . / Komut satırı

Aşağıdaki resimde gösterilen bu C++ programının çıktısından, bağımsız değişken sayısının '0' olması nedeniyle bu işleve hiçbir komut satırı bağımsız değişkeninin iletilmediğini ve ' karakter dizisi ' nedeniyle terminalde hiçbir bağımsız değişkenin yazdırılmadığını görebilirsiniz. argv” de boştu.

Tamsayı Türü Komut Satırı Bağımsız Değişkenleriyle Bir C++ Programı Çalıştırma:

Şimdi, aynı C++ programını ona tamsayı tipi komut satırı argümanlarını ileterek çalıştırmak istiyoruz. Ancak bunu yapmadan önce kodumuzu aşağıdaki görseldeki gibi biraz değiştireceğiz:

Bu kodda yaptığımız tek değişiklik, 'argc=0' satırını ondan kaldırmış olmamızdır çünkü bu örnekte, çalışma zamanında bu programa iletilen komut satırı bağımsız değişkenlerinin gerçek sayısını yazdırmak istiyoruz. Kodun geri kalanı, yukarıdaki bölümde kullanılanla tamamen aynıdır.

Değiştirilen kodumuzu aşağıda gösterilen komutu kullanarak yeniden derledik:

$ g++ CommandLine.cpp –o Komut Satırı

Ardından, bu kodu yürütmek için aşağıdaki komut satırı argümanlarını kullandık:

$ . / Komut satırı 1 iki 3

Bu, programı çalıştırırken bu C++ programına üç tamsayı türü komut satırı argümanı, yani 1, 2 ve 3 ilettiğimiz anlamına gelir.

Bu değiştirilmiş programın çıktısı aşağıdaki resimde gösterilmektedir:

Bu C++ programı tarafından döndürülen argümanların toplam sayısı “4” yani, ilettiğimiz üç tamsayı argümanı + nesne dosyasının adı. Bu program aynı zamanda terminaldeki 'argv' karakter dizisinin öğelerini, yani yürütme sırasında bu programa iletilen gerçek tamsayı tipi bağımsız değişkenleri, programın adıyla birlikte yazdırdı.

Karakter Türü Komut Satırı Bağımsız Değişkenleriyle Bir C++ Programı Çalıştırma:

Şimdi, aynı C++ programına karakter tipi komut satırı argümanlarını ileterek çalıştırmayı denediğimizde aynı C++ programının iyi çalışıp çalışmadığını görmek istedik. Bunun için daha fazla değiştirmemize gerek yoktu. Bunu yalnızca aşağıdaki gibi karakter türü komut satırı argümanlarıyla yürütmemiz gerekiyordu:

$ . / Komut Satırı a b c d e f

Bu, bu C++ programını çalıştırırken altı karakterli komut satırı argümanlarını, yani a, b, c, d, e ve f'yi ilettiğimiz anlamına gelir.

Karakter tipi komut satırı bağımsız değişkenlerinin aynı C++ programına geçirilmesi sonucunda üretilen çıktı aşağıda gösterilmiştir:

Bu C++ programı tarafından döndürülen toplam bağımsız değişken sayısı “7”dir, yani ilettiğimiz altı karakterli bağımsız değişkenler + nesne dosyasının adı. Bu program aynı zamanda uçbirimdeki 'argv' karakter dizisinin öğelerini, yani yürütme sırasında bu programa iletilen gerçek karakter türü argümanlarını programın adıyla birlikte yazdırdı.

Çözüm:

Bu makale, 'main()' işlevinin parametreleri olarak da bilinen iki komut satırı argümanının, yani 'argc' ve 'argv'nin tartışılmasını amaçlıyordu. Kullanımlarını belirterek bu iki parametrenin öneminden bahsetmiştik. Ardından Ubuntu 20.04'te C++'da “argc” ve “argv” kullanımını gösteren birkaç örneği sizlerle paylaştık. Ayrıca bu parametreler kullanılmadan da “main()” fonksiyonunun mükemmel bir şekilde çalışabileceğini açıkladık. Bu nedenle, bu makaleyi bir kez okuduğunuzda, C++'da “argc” ve “argv” kullanımını çok net bir şekilde anlayacaksınız.