Аргц и Аргв Ц++

Argc I Argv C



Док пишемо Ц++ програме, сви знамо да се функција „маин()“ сматра веома важном јер не можемо компајлирати наш програм ако недостаје имплементација ове функције. Као и све друге функције у Ц++, функција „маин()“ такође може да прихвати аргументе. Међутим, разлика између прослеђивања аргумената функцији „маин()“ од прослеђивања аргумената другим функцијама је у томе што у првом случају морате проследити аргументе кроз командну линију. То је зато што је сама функција „маин()“ покретачка функција, због чега ниједна друга функција није способна да је позове и пренесе јој аргументе. У овом чланку ћемо расправљати о два параметра функције „маин()“, тј. „аргц“ и „аргв“ у Ц++ у Убунту 20.04.

Шта су Аргц и Аргв у Ц++ у Убунту 20.04?

Параметар „аргц“ се односи на број аргумената, док се „аргв“ односи на низ знакова који садржи све аргументе који се прослеђују функцији „маин()“ кроз командну линију у време извршавања програма у Ц++. Овде морате да знате да „аргц“ увек приказује број аргумената као „1“ више од стварног броја пренетих аргумената. То је зато што се име објектне датотеке такође рачуна као аргумент командне линије. Можете проследити аргументе командне линије који припадају било ком типу података функцији „маин()“. Све о чему треба да водите рачуна је да се ови параметри помињу у прототипу ваше „маин()“ функције ако желите да им приступите унутар ње. Међутим, функција „маин()“ може савршено добро да ради без ова два параметра. О томе ће бити речи у следећем одељку овог чланка, након чега ћемо прећи на коришћење ова два параметра у Ц++ у Убунту 20.04.

Главна функција без Аргц и Аргв у Ц++:

Пре свега, желимо да вам кажемо да функција „маин()“ у Ц++-у може да ради савршено добро чак и без коришћења параметара „аргц“ и „аргв“. Ово је приказано у следећем Ц++ програму:









У овом програму имамо једноставну функцију „маин()“ без икаквих аргумената. У оквиру ове функције „маин()“, штампамо само пример поруке на терминалу.



Затим смо саставили овај основни Ц++ програм уз помоћ доле наведене команде:





$ г++ ЦоммандЛине.цпп –о Командна линија

Након тога, извршили смо овај програм тако што смо покренули следећу команду:



$ . / Командна линија

Резултат овог једноставног Ц++ програма је приказан на слици испод:

Покретање Ц++ програма без прослеђивања аргумента командне линије:

Сада ћемо покушати да имплементирамо Ц++ програм у којем функција „маин()“ може да прихвати параметре „аргц“ и „аргв“, међутим, нећемо му прослеђивати ове аргументе док извршавамо овај програм из терминал. Наведени Ц++ програм је приказан на следећој слици:

У овом Ц++ програму, наша „маин()“ функција је способна да прихвати „аргц“ и „аргв“ параметре. Међутим, пошто нисмо намеравали да му проследимо ове вредности у овом конкретном примеру, намерно смо изједначили „аргц“ са „0“ тако да када покушамо да одштампамо његову вредност, неће вратити никакву вредност смећа. Након тога, одштампали смо вредност параметра „аргц“ на терминалу. Затим смо користили петљу „фор“ за штампање свих аргумената командне линије на терминалу.

Саставили смо овај код користећи наредбу приказану испод:

$ г++ ЦоммандЛине.цпп –о Командна линија

Затим, када смо желели да покренемо овај програм, нисмо му проследили никакве аргументе командне линије, као што можете видети из следеће команде:

$ . / Командна линија

Из излаза овог Ц++ програма приказаног на слици испод, можете видети да овој функцији нису прослеђени аргументи командне линије због чега је број аргумената био „0“ и да ниједан аргумент није одштампан на терминалу јер је низ знакова „ аргв” је такође био празан.

Покретање Ц++ програма са аргументима командне линије типа целобројног типа:

Сада желимо да покренемо исти Ц++ програм тако што ћемо му проследити аргументе командне линије целобројног типа. Међутим, пре него што то урадимо, мало ћемо модификовати наш код као што је приказано на следећој слици:

Једина модификација коју смо направили у овом коду је да смо из њега уклонили линију „аргц=0“ јер у овом примеру желимо да одштампамо стварни број аргумената командне линије који су прослеђени овом програму током извршавања. Остатак кода је потпуно исти као коришћен у горњем одељку.

Поново смо компајлирали наш модификовани код користећи наредбу приказану испод:

$ г++ ЦоммандЛине.цпп –о Командна линија

Затим, за извршавање овог кода, користили смо следеће аргументе командне линије:

$ . / Командна линија 1 два 3

То значи да смо овом Ц++ програму проследили три аргумента командне линије целобројног типа док смо га покретали, тј. 1, 2 и 3.

Резултат овог модификованог програма је приказан на слици испод:

Укупан број аргумената које је вратио овај Ц++ програм је „4“, тј. три целобројна аргумента која смо проследили + име објектне датотеке. Овај програм је такође штампао елементе низа знакова „аргв“ на терминалу, односно стварне аргументе целобројног типа који су прослеђени овом програму у време извршавања, заједно са именом програма.

Покретање Ц++ програма са аргументима командне линије типа карактера:

Сада смо хтели да видимо да ли исти Ц++ програм добро функционише када покушамо да га извршимо прослеђивањем аргумената командне линије типа карактера. За то нам није било потребно да га даље мењамо. Морали смо само да га извршимо са аргументима командне линије типа знакова на следећи начин:

$ . / Командна линија а б ц д е ф

То значи да смо овом Ц++ програму проследили аргументе командне линије типа шест знакова док смо га покретали, тј. а, б, ц, д, е и ф.

Излаз произведен као резултат прослеђивања аргумената командне линије типа карактера истом Ц++ програму је приказан у наставку:

Укупан број аргумената које је вратио овај Ц++ програм је „7“, тј. аргументи од шест знакова које смо проследили + име објектне датотеке. Овај програм је такође штампао елементе низа знакова „аргв“ на терминалу, односно стварне аргументе типа знакова који су прослеђени овом програму у време извршавања, заједно са именом програма.

Закључак:

Овај чланак је имао за циљ расправу о два аргумента командне линије, такође познатим као параметри функције „маин()“, тј. „аргц“ и „аргв“. О значају ова два параметра говорили смо наводећи њихову употребу. Затим смо поделили са вама неколико примера који описују употребу „аргц“ и „аргв“ у Ц++ у Убунту 20.04. Штавише, такође смо разјаснили да чак и без коришћења ових параметара, функција „маин()“ може да ради савршено добро. Стога, када прочитате овај чланак, разумећете употребу „аргц“ и „аргв“ веома јасно у Ц++.