Argc и Argv C++

Argc I Argv C



Докато пишем програми на C++, всички знаем, че функцията „main()“ се счита за много важна, тъй като не можем да компилираме нашата програма, ако изпълнението на тази функция липсва. Точно както всички други функции в C++, функцията „main()“ също може да приема аргументи. Въпреки това, разликата между предаването на аргументи към функцията „main()“ от предаването на аргументи към другите функции е, че трябва да подадете аргументите през командния ред в първия случай. Това е така, защото самата функция „main()“ е функцията на драйвера, поради което никоя друга функция не може да я извика и да й предаде аргументи. В тази статия ще обсъдим двата параметъра на функцията „main()“, т.е. „argc“ и „argv“ в C++ в Ubuntu 20.04.

Какво е Argc и Argv в C++ в Ubuntu 20.04?

Параметърът „argc“ се отнася до броя на аргументите, докато „argv“ се отнася до масив от знаци, който съдържа всички аргументи, които се предават на функцията „main()“ през командния ред по време на изпълнение на програма в C++. Тук трябва да знаете, че „argc“ винаги показва броя на аргументите като „1“ повече от действителния брой предадени аргументи. Това е така, защото името на обектния файл също се брои като аргумент на командния ред. Можете да предадете аргументите на командния ред, принадлежащи към произволен тип данни, към функцията „main()“. Всичко, за което трябва да се погрижите, е тези параметри да са споменати в прототипа на вашата функция „main()“, ако искате да получите достъп до тях вътре в нея. Функцията “main()” обаче може да работи перфектно без тези два параметъра. Това ще бъде обсъдено в следващия раздел на тази статия, след което ще преминем към използването на тези два параметъра в C++ в Ubuntu 20.04.

Основната функция без Argc и Argv в C++:

Първо, бихме искали да ви кажем, че функцията “main()” в C++ може да работи перфектно дори и без да използвате параметрите “argc” и “argv”. Това е изобразено в следната C++ програма:









Имаме проста функция 'main()' в тази програма без никакви аргументи. В рамките на тази функция „main()“ ние отпечатваме само примерно съобщение на терминала.



След това компилирахме тази основна C++ програма с помощта на командата, спомената по-долу:





$ g++ CommandLine.cpp –o команден ред

След това изпълнихме тази програма, като изпълнихме следната команда:



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

Резултатът от тази проста C++ програма е показан на изображението по-долу:

Изпълнение на C++ програма без подаване на аргументи от командния ред:

Сега ще се опитаме да имплементираме C++ програма, в която функцията „main()“ може да приема параметрите „argc“ и „argv“, но няма да й предаваме тези аргументи, докато изпълняваме тази програма от терминал. Споменатата C++ програма е показана на следното изображение:

В тази програма на C++ нашата функция „main()“ може да приема параметри „argc“ и „argv“. Въпреки това, тъй като не възнамерявахме да му предадем тези стойности в този конкретен пример, ние умишлено изравнихме „argc“ на „0“, така че когато се опитаме да отпечатаме стойността му, той няма да върне никаква стойност за боклук. След това отпечатахме стойността на параметъра “argc” на терминала. След това използвахме цикъл „for“ за отпечатване на всички аргументи на командния ред на терминала.

Компилирахме този код с помощта на командата, показана по-долу:

$ g++ CommandLine.cpp –o команден ред

След това, когато искахме да стартираме тази програма, не й предадохме никакви аргументи от командния ред, както можете да видите от следната команда:

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

От изхода на тази C++ програма, показан на изображението по-долу, можете да видите, че на тази функция не са предадени аргументи от командния ред, поради което броят на аргументите е „0“ и никакви аргументи не са отпечатани на терминала, тъй като масивът от символи „ argv” също беше празен.

Стартиране на програма на C++ с аргументи на командния ред с целочислен тип:

Сега искаме да изпълним същата C++ програма, като й предадем аргументи от командния ред от целочислен тип. Въпреки това, преди да направим това, ще променим леко нашия код, както е показано на следното изображение:

Единствената модификация, която направихме в този код е, че премахнахме реда „argc=0“ от него, защото в този пример искаме да отпечатаме действителния брой аргументи на командния ред, предадени на тази програма по време на изпълнение. Останалата част от кода е точно същата като използваната в раздела по-горе.

Ние прекомпилирахме нашия модифициран код с помощта на командата, показана по-долу:

$ g++ CommandLine.cpp –o команден ред

След това, за да изпълним този код, използвахме следните аргументи на командния ред:

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

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

Резултатът от тази модифицирана програма е показан на изображението по-долу:

Общият брой аргументи, върнати от тази C++ програма, е „4“, т.е. три целочислени аргумента, които сме предали + името на обектния файл. Тази програма също отпечатва елементите на масива от символи „argv“ на терминала, т.е. действителните аргументи от целочислен тип, които са били предадени на тази програма по време на изпълнение, заедно с името на програмата.

Изпълнение на програма на C++ с аргументи на командния ред за символен тип:

Сега искахме да видим дали същата C++ програма работи добре, когато се опитаме да я изпълним, като й предадем символни аргументи от командния ред. За това не е необходимо да го модифицираме повече. Трябваше само да го изпълним с аргументи на командния ред от символен тип, както следва:

$ . / Команден ред a b c d e f

Това означава, че сме предали аргументи от командния ред от шест знака на тази C++ програма, докато я изпълняваме, т.е. a, b, c, d, e и f.

Резултатът, получен в резултат на предаване на аргументи от командния ред на символен тип към същата C++ програма, е показан по-долу:

Общият брой аргументи, върнати от тази програма на C++, е „7“, т.е. аргументи от шест знака, които сме предали + името на обектния файл. Тази програма също така отпечатва елементите на масива от символи „argv“ на терминала, т.е. действителните аргументи на типа символи, които са били предадени на тази програма по време на изпълнение, заедно с името на програмата.

Заключение:

Тази статия беше насочена към обсъждането на двата аргумента на командния ред, известни също като параметри на функцията „main()“, т.е. „argc“ и „argv“. Говорихме за значението на тези два параметъра, като посочихме тяхната употреба. След това споделихме няколко примера с вас, които описват използването на „argc“ и „argv“ в C++ в Ubuntu 20.04. Освен това, ние също така изяснихме, че дори без да използваме тези параметри, функцията „main()“ може да работи перфектно. Следователно, след като прочетете тази статия, ще разберете много ясно използването на „argc“ и „argv“ в C++.