Jak wspomnieliśmy, do programu można przekazać dane za pomocą argumentów wywołania. Opiszemy to pokrótce teraz, aby Czytelnik mógł używać tego mechanizmu w pisanych przez siebie programach. Pełne jego zrozumienie możliwe będzie jednak dopiero po zapoznaniu się z tablicami, wskaźnikami i funkcjami w następnych rozdziałach.
Aby korzystanie z argumentów wywołania było możliwe, funkcja main programu powinna być zdefiniowana z nagłówkiem
int main(int argc, char **argv)lub, równoważnie,
int main(int argc, char *argv[])Pierwszy parametr, o zwyczajowej nazwie argc, jest liczbą argumentów podanych podczas wywołania programu. Pierwszym z tych argumentów, o numerze 0, jest zawsze nazwa wywoływanego programu. Tak więc argc jest zawsze co najmniej jeden. Zmienna argv wygląda trochę tajemniczo, ale tak naprawdę jest tablicą napisów zawierających kolejne argumenty wywołania: argv[0], argv[1], ..., argv[argc-1]; indeksowanie rozpoczyna się od zera, dlatego ostatnią wartścią indeksu jest argc-1 a nie argc. Tablica ta jest podobna do tablicy, nazywanej zwykle args, w Javie. Ponieważ, jak się przekonamy, tablice w C/C++ nie są obiektami i nie zawierają odpowiednika zmiennej obiektowej length z Javy, więc trzeba było przekazać tablicę napisów reprezentujących argumenty oraz, osobno, rozmiar tej tablicy (poprzez parametr argc). Więcej szczegółów na temat tablic napisów podamy w rozdziale o tablicach napisowych .
Tak więc, na przykład, program wypisujący
swoje argumenty wywołania mógłby mieć postać:
1. #include <iostream> 2. using namespace std; 3. 4. int main(int argc, char **argv) { 5. cout << "Nazwa programu: " << argv[0] << endl 6. << "Ilosc argumentow: " << argc << endl; 7. for (int i = 1; i < argc; i++) 8. cout << "Argumentem nr " << i << " jest " 9. << argv[i] << endl; 10. }
którego uruchomienie wyglądało następująco:
cpp> g++ -o argumenty argumenty.cpp cpp> argumenty 12 a "b c" 'd e' Nazwa programu: argumenty Ilosc argumentow: 5 Argumentem nr 1 jest 12 Argumentem nr 2 jest a Argumentem nr 3 jest b c Argumentem nr 4 jest d eJak widzimy, można do programu przekazywać jako pojedyncze argumenty napisy zawierające odstępy, jeśli tylko ujmiemy je w cudzysłowy lub apostrofy. W powyższym przykładzie argumentów wywołania jest pięć; pierwszy, o indeksie 0, jest nazwą programu, w tym przypadku argumenty.
T.R. Werner, 21 lutego 2016; 20:17