Witam! Ostatnio czytałem co zrobić, żeby program mógł przyjmować parametry. w int main() musiały być parametry int argc oraz tablica char argv[]. Tylko, że przy argv[] był wieloznacznik (gwiazdka). Co ona oznaczała? Po co była? Bez niej kod nie działał. Dodatkowo widziałem, że wszędzie gdzie są zmienne char trzeba dać gwiazdkę, o co z tym chodzi?
Ale aż tak trudno wpisać w google co oznaca argc oraz argv oraz jak się tego używa?:
argc - argument count
argv - argument vector.
Tak samo zapis *tab[]
oznacza, że to tablica wskaźników.
Zatem przykładowo jak wywołamy program:
program.exe arg1 arg2 arg3
będziemy mieli:
argc -> 4
argv[0] -> program.exe
argv[1] -> arg1
argv[2] -> arg2
argv[3] -> arg3
Poza tym co to za nazwa wieloznacznik....
Po więcej odsyłam do jakiegokolwiek tutka na temat C/C++ bo pytasz o zupełne podstawy
Ja tam używam char **argv, jest bardziej czytelnie.
Zimny Orzeł napisał(a):
Ja tam używam char **argv, jest bardziej czytelnie.
Jest mniej czytelne, bo sugeruje że argv jest wskaźnikiem na wskaźnik, a tymczasem jest tablicą wskaźników.
Nawias []
wyraźnie wskazuje że elementów może być więcej niż jeden, a *
sugeruje że jest tylko jeden.
Z punktu widzenia języka C nie ma znaczenia czy dasz **argv
czy *argv[]
albo nawet *alamakota[]
bo nazwa jest dowolna, ale z założenia jest to int main(int argc, char *argv[])
.
@PrezesiQ:
Załóżmy że masz 2 tablice znaków
F O O \0
B A R \0
Gdybyś chciał przekazać ją do funkcji to tak naprawdę przekazujesz jako wskaźnik to pierwszego elementu (char* arg
)
F O O \0
^
Więc gdy chcesz przekazać kilka takich tablic, a więc kilka wskaźników robisz tablicę wskaźników (char* args[]
)