Argc i Argv C++

Argc I Argv C



Dok pišemo C++ programe, svi znamo da se funkcija “main()” smatra vrlo važnom jer ne možemo prevesti naš program ako nedostaje implementacija ove funkcije. Kao i sve druge funkcije u C++-u, funkcija “main()” također može prihvaćati argumente. Međutim, razlika između prosljeđivanja argumenata funkciji 'main()' i prosljeđivanja argumenata drugim funkcijama je u tome što u prvom slučaju argumente morate proslijediti kroz naredbeni redak. To je tako jer je sama funkcija 'main()' funkcija pokretača, zbog čega je nijedna druga funkcija ne može pozvati i proslijediti joj argumente. U ovom ćemo članku raspravljati o dva parametra funkcije 'main()', tj. 'argc' i 'argv' u C++ u Ubuntu 20.04.

Što je Argc i Argv u C++ u Ubuntu 20.04?

Parametar 'argc' odnosi se na broj argumenata, dok se 'argv' odnosi na niz znakova koji sadrži sve argumente koji se prosljeđuju funkciji 'main()' kroz naredbeni redak u vrijeme izvršavanja programa u C++. Ovdje morate znati da “argc” uvijek pokazuje broj argumenata kao “1” više od stvarnog broja proslijeđenih argumenata. To je tako jer se naziv objektne datoteke također računa kao argument naredbenog retka. Funkciji 'main()' možete proslijediti argumente naredbenog retka koji pripadaju bilo kojoj vrsti podataka. Sve o čemu trebate voditi računa jest da su ti parametri spomenuti u prototipu vaše funkcije 'main()' ako im želite pristupiti unutar nje. Međutim, funkcija 'main()' može savršeno dobro raditi i bez ova dva parametra. O tome će biti riječi u sljedećem odjeljku ovog članka, nakon čega ćemo nastaviti s korištenjem ova dva parametra u C++ u Ubuntu 20.04.

Glavna funkcija bez Argc i Argv u C++:

Prije svega, htjeli bismo vam reći da funkcija “main()” u C++-u može raditi savršeno dobro čak i bez korištenja parametara “argc” i “argv”. Ovo je prikazano u sljedećem C++ programu:









U ovom programu imamo jednostavnu funkciju “main()” bez ikakvih argumenata. Unutar ove funkcije “main()” ispisujemo samo primjer poruke na terminalu.



Zatim smo kompajlirali ovaj osnovni C++ program uz pomoć dolje navedene naredbe:





$ g++ CommandLine.cpp –o CommandLine

Nakon toga smo izvršili ovaj program izvođenjem sljedeće naredbe:



$ . / CommandLine

Izlaz ovog jednostavnog C++ programa prikazan je na slici ispod:

Pokretanje C++ programa bez prosljeđivanja argumenata naredbenog retka:

Sada ćemo pokušati implementirati C++ program u kojem funkcija “main()” može prihvatiti parametre “argc” i “argv”, međutim, nećemo joj prosljeđivati ​​ove argumente dok izvršava ovaj program iz terminal. Navedeni C++ program prikazan je na sljedećoj slici:

U ovom C++ programu, naša funkcija “main()” može prihvatiti parametre “argc” i “argv”. Međutim, budući da mu nismo namjeravali proslijediti te vrijednosti u ovom konkretnom primjeru, namjerno smo izjednačili 'argc' na '0' tako da kada pokušamo ispisati njegovu vrijednost, neće vratiti nikakvu otpadnu vrijednost. Nakon toga ispisali smo vrijednost parametra “argc” na terminalu. Zatim smo upotrijebili petlju 'for' za ispis svih argumenata naredbenog retka na terminalu.

Sastavili smo ovaj kod pomoću naredbe prikazane u nastavku:

$ g++ CommandLine.cpp –o CommandLine

Zatim, kada smo htjeli pokrenuti ovaj program, nismo mu proslijedili nikakve argumente naredbenog retka, kao što možete vidjeti iz sljedeće naredbe:

$ . / CommandLine

Iz izlaza ovog C++ programa prikazanog na slici ispod, možete vidjeti da ovoj funkciji nisu proslijeđeni argumenti naredbenog retka zbog čega je broj argumenata bio “0” i da nijedan argument nije ispisan na terminalu jer niz znakova “ argv” je također bio prazan.

Pokretanje C++ programa s argumentima naredbenog retka tipa Integer:

Sada želimo pokrenuti isti C++ program prosljeđujući mu argumente naredbenog retka integer tipa. Međutim, prije nego što to učinimo, malo ćemo modificirati naš kod kao što je prikazano na sljedećoj slici:

Jedina izmjena koju smo napravili na ovom kodu je da smo iz njega uklonili redak 'argc=0' jer u ovom primjeru želimo ispisati stvarni broj argumenata naredbenog retka proslijeđenih ovom programu tijekom izvođenja. Ostatak koda potpuno je isti kao u gornjem odjeljku.

Ponovno smo kompajlirali naš modificirani kod pomoću naredbe prikazane u nastavku:

$ g++ CommandLine.cpp –o CommandLine

Zatim smo za izvođenje ovog koda upotrijebili sljedeće argumente naredbenog retka:

$ . / CommandLine 1 dva 3

To znači da smo proslijedili tri argumenta naredbenog retka cijelog tipa ovom C++ programu dok ga izvodimo, tj. 1, 2 i 3.

Izlaz ovog modificiranog programa prikazan je na slici ispod:

Ukupan broj argumenata koje vraća ovaj C++ program je '4', tj. tri cijela argumenta koja smo proslijedili + naziv objektne datoteke. Ovaj program također ispisuje elemente niza znakova 'argv' na terminalu, tj. stvarne argumente tipa cjelobrojnog broja koji su proslijeđeni ovom programu u vrijeme izvođenja, zajedno s nazivom programa.

Pokretanje C++ programa s argumentima naredbenog retka vrste znakova:

Sada smo željeli vidjeti radi li isti C++ program dobro kada ga pokušamo izvršiti prosljeđivanjem argumenata naredbenog retka znakovnog tipa. Za to ga nismo morali dalje modificirati. Morali smo ga samo izvršiti s argumentima naredbenog retka znakovnog tipa kako slijedi:

$ . / Naredbeni redak a b c d e f

To znači da smo proslijedili argumente naredbenog retka od šest znakova ovom C++ programu dok ga izvodimo, tj. a, b, c, d, e i f.

Izlaz proizveden kao rezultat prosljeđivanja argumenata naredbenog retka znakovnog tipa istom C++ programu prikazan je u nastavku:

Ukupan broj argumenata koje vraća ovaj C++ program je '7', tj. argumenti od šest znakova koje smo proslijedili + naziv objektne datoteke. Ovaj program također ispisuje elemente niza znakova “argv” na terminalu, tj. stvarne argumente tipa znakova koji su proslijeđeni ovom programu u vrijeme izvođenja, zajedno s nazivom programa.

Zaključak:

Ovaj je članak bio usmjeren na raspravu o dva argumenta naredbenog retka, također poznatih kao parametri funkcije 'main()', tj. 'argc' i 'argv'. O značaju ova dva parametra govorili smo navodeći njihovu upotrebu. Zatim smo s vama podijelili nekoliko primjera koji opisuju korištenje 'argc' i 'argv' u C++ u Ubuntu 20.04. Štoviše, također smo pojasnili da čak i bez korištenja ovih parametara funkcija 'main()' može savršeno dobro raditi. Stoga, nakon što pročitate ovaj članak, vrlo ćete jasno razumjeti upotrebu 'argc' i 'argv' u C++.