Argc i Argv C++

Argc I Argv C



Mentre escrivim programes C++, tots sabem que la funció 'main()' es considera molt important ja que no podem compilar el nostre programa si falta la implementació d'aquesta funció. Igual que totes les altres funcions de C++, la funció 'main()' també és capaç d'acceptar arguments. Tanmateix, la diferència entre passar arguments a la funció 'main()' i passar arguments a les altres funcions és que heu de passar els arguments a través de la línia d'ordres en el primer cas. És així perquè la funció 'main()' en si és la funció del controlador, per això cap altra funció és capaç de cridar-la i passar-li arguments. En aquest article, parlarem dels dos paràmetres de la funció 'main()', és a dir, 'argc' i 'argv' en C++ a Ubuntu 20.04.

Què és Argc i Argv en C++ a Ubuntu 20.04?

El paràmetre 'argc' fa referència al recompte d'arguments, mentre que 'argv' es refereix a una matriu de caràcters que conté tots els arguments que es passen a la funció 'main()' a través de la línia d'ordres en el moment d'executar un programa en C++. Aquí, heu de saber que 'argc' sempre mostra el recompte d'arguments com a '1' més que el nombre real d'arguments passats. Això és així perquè el nom del fitxer objecte també es compta com a argument de línia d'ordres. Podeu passar els arguments de la línia d'ordres que pertanyen a qualsevol tipus de dades a la funció 'main()'. Tot el que heu de tenir en compte és que aquests paràmetres s'esmenten al prototip de la vostra funció 'main()' si voleu accedir-hi. Tanmateix, la funció 'main()' pot funcionar perfectament sense aquests dos paràmetres. Això es discutirà a la següent secció d'aquest article, després del qual procedirem a l'ús d'aquests dos paràmetres en C++ a Ubuntu 20.04.

La funció principal sense Argc i Argv en C++:

En primer lloc, ens agradaria dir-vos que la funció 'main()' en C++ pot funcionar perfectament fins i tot sense utilitzar els paràmetres 'argc' i 'argv'. Això es mostra al següent programa C++:









Tenim una funció simple 'main()' en aquest programa sense cap argument. Dins d'aquesta funció 'main()', només estem imprimint un missatge de mostra al terminal.



A continuació, vam compilar aquest programa bàsic de C++ amb l'ajuda de l'ordre que s'esmenta a continuació:





$ g++ CommandLine.cpp –o CommandLine

Després, vam executar aquest programa executant la següent comanda:



$ . / Línia d'ordres

La sortida d'aquest senzill programa C++ es mostra a la imatge següent:

Executar un programa C++ sense passar cap argument de línia d'ordres:

Ara, intentarem implementar un programa C++ en el qual la funció 'main()' sigui capaç d'acceptar els paràmetres 'argc' i 'argv', però, no li passarem aquests arguments mentre executem aquest programa des del terminal. L'esmentat programa C++ es mostra a la imatge següent:

En aquest programa C++, la nostra funció 'main()' és capaç d'acceptar paràmetres 'argc' i 'argv'. Tanmateix, com que no teníem la intenció de passar-li aquests valors en aquest exemple concret, hem igualat intencionadament 'argc' a '0' de manera que quan intentem imprimir el seu valor, no retornarà cap valor d'escombraries. Després d'això, hem imprès el valor del paràmetre 'argc' al terminal. Aleshores, hem utilitzat un bucle 'for' per imprimir tots els arguments de la línia d'ordres al terminal.

Hem compilat aquest codi amb l'ordre que es mostra a continuació:

$ g++ CommandLine.cpp –o CommandLine

Aleshores, quan volíem executar aquest programa, no li vam passar cap argument de línia d'ordres, com podeu veure a la següent comanda:

$ . / Línia d'ordres

A partir de la sortida d'aquest programa C++ que es mostra a la imatge següent, podeu veure que no s'han passat arguments de línia d'ordres a aquesta funció perquè el nombre d'arguments era '0' i no es van imprimir arguments al terminal perquè la matriu de caràcters ' argv” també estava buit.

Execució d'un programa C++ amb arguments de línia d'ordres de tipus enter:

Ara, volem executar el mateix programa C++ passant-li arguments de línia d'ordres de tipus enter. Tanmateix, abans de fer-ho, modificarem lleugerament el nostre codi tal com es mostra a la imatge següent:

L'única modificació que hem fet a aquest codi és que n'hem eliminat la línia 'argc=0' perquè en aquest exemple, volem imprimir el nombre real dels arguments de la línia d'ordres passats a aquest programa en temps d'execució. La resta del codi és exactament el mateix que s'utilitza a la secció anterior.

Hem recompilat el nostre codi modificat mitjançant l'ordre que es mostra a continuació:

$ g++ CommandLine.cpp –o CommandLine

Aleshores, per executar aquest codi, hem utilitzat els següents arguments de línia d'ordres:

$ . / Línia d'ordres 1 2 3

Significa que hem passat tres arguments de línia d'ordres de tipus enter a aquest programa C++ mentre l'executem, és a dir, 1, 2 i 3.

La sortida d'aquest programa modificat es mostra a la imatge següent:

El nombre total d'arguments retornats per aquest programa C++ és '4', és a dir, tres arguments enters que hem passat + el nom del fitxer objecte. Aquest programa també va imprimir els elements de la matriu de caràcters 'argv' al terminal, és a dir, els arguments reals de tipus enter que es van passar a aquest programa en el moment de l'execució, juntament amb el nom del programa.

Execució d'un programa C++ amb arguments de línia d'ordres de tipus de caràcter:

Ara, volíem veure si el mateix programa C++ funciona bé quan intentem executar-lo passant-li arguments de línia d'ordres de tipus de caràcter. Per això, no calia modificar-lo més. Només havíem d'executar-lo amb arguments de línia d'ordres de tipus de caràcter de la següent manera:

$ . / Línia d'ordres a b c d e f

Significa que hem passat arguments de línia d'ordres de sis caràcters a aquest programa C++ mentre l'executem, és a dir, a, b, c, d, e i f.

La sortida produïda com a resultat de passar arguments de línia d'ordres de tipus de caràcter al mateix programa C++ es mostra a continuació:

El nombre total d'arguments retornats per aquest programa C++ és '7', és a dir, arguments de sis caràcters que hem passat + el nom del fitxer objecte. Aquest programa també va imprimir els elements de la matriu de caràcters 'argv' al terminal, és a dir, els arguments reals del tipus de caràcter que es van passar a aquest programa en el moment de l'execució, juntament amb el nom del programa.

Conclusió:

Aquest article tenia com a objectiu la discussió dels dos arguments de la línia d'ordres, també coneguts com els paràmetres de la funció 'main()', és a dir, 'argc' i 'argv'. Hem parlat de la importància d'aquests dos paràmetres indicant el seu ús. A continuació, vam compartir amb vosaltres uns quants exemples que descriuen l'ús de 'argc' i 'argv' a C++ a Ubuntu 20.04. A més, també vam aclarir que fins i tot sense utilitzar aquests paràmetres, la funció 'main()' podria funcionar perfectament. Per tant, un cop llegiu aquest article, entendreu molt clarament l'ús de 'argc' i 'argv' en C++.