Аргументы функцыі main, C++

З пляцоўкі Вікіпедыя
Перайсці да: рух, знайсці

argc і argv — стандартныя аргументы галоўнай функцыі «main» ў мове праграмавання C++[1].

У некаторых аперацыйных сістэмах функцыя main можа мець дадатковыя аргументы.

Прыклад выкарыстання argc і argv[правіць | правіць зыходнік]

Даволі зручна заносіць інфармацыю ў праграму падчас яе выканання. Пры гэтым даныя ў праграму заносяцца праз аргументы каманднага радка. У функцыі «main» прадугледжаныя два адмыслова ўбудаваныя аргументы: «argc» і «argv». argc пазначае колькасць аргументаў, запісаных у камандным радку (argc — цэлалікавы тып даных «int»). Аргумент argv — гэта ўказальнік на масіў указальнікаў сімвальнага тыпу ў камандным радку (argv — указальнік на ўказальнік на сімвальны тып даных «char»). Напрыклад, наступная праграма выводзіць «Hello», а потым праз прабел вашае імя, калі вы ўвялі імя ў праграму:

# include <stdio.h>
# include <stdlib.h>
 
int main (int argc, char *argv[])
{
	if (argc != 2) {
		printf("Вы забыліся ўвесці сваё імя.\n");
		exit(1);
	}
 
	printf("Hello %s", argv[2]);
	return 0;
}
  • Тлумачэнне. Пасля кампіляцыі праграмы неабходна зайсці ў камандны радок (для Windows-кампілятараў), або тэрмінал (для Linux-кампілятараў), перайсці ў дырэкторыю, дзе знаходзіцца скампіляваная праграма і набраць яе назву (хай, напрыклад, праграма называецца «arg.exe»), а затым сваё імя, напрыклад:

arg Erka

Вывад будзе наступным:

Hello Erka

Калі ўвод такі:

arg

То праграма выведзе радок:

Вы забыліся ўвесці сваё імя

таму што першым аргументам лічыцца назва праграмы, а другім — імя. А па ўмове

if (argc != 2)

колькасць аргументаў не павінна раўняцца двум[2].

Зноскі

  1. Herbert Schildt. C++: The Complete Reference, 3th Edition, p. 144; ISBN-10: 0078824761
  2. Herbert Schildt. C++: The Complete Reference, 3th Edition, p. 145; ISBN-10: 0078824761

Літаратура[правіць | правіць зыходнік]

  • Герберт Шилдт. Полный справочник по C++, 4-е издание = C++: The Complete Reference, 4th Edition — М.: «Вильямс», 2011. — 800 с. — ISBN 978-5-8459-0489-8.