Representan los parámetros de la línea de comando.
argc es el número de parámetros de la línea de comandos, incluido el nombre del ejecutable. argv es una matriz de cadenas terminadas en nulo, donde argv[0]
es el parámetro de la línea de comando y argv[i]
es el parámetro ith después de eso, argv[argc-1]
es el último y argv[argc]
está realmente bien definido y tiene un puntero NULL.
Por lo tanto:
foo bar baz
en la línea de comandos tendrá argc
= 3, argv[0]
= "foo" argv[1]
= "bar" argv[2]
= "Baz" argv[3]
= NULL
Nota que hay no hay ningún archivo adjunto especial para los argumentos de "bandera".
grep -i foo bar.cpp bar.h
tendría 4 argumentos (argc = 5 incluyendo grep sí mismo), -i es uno de ellos y esto se aplicaría incluso si el siguiente parámetro era un "valor" unido a la bandera.
Nota si se hizo un comodín
grep -i foo *
en UNIX, al menos, el * se ampliaría antes de la llamada a grep y así cada archivo que coincidió sería un argumento.
Por cierto
char** argv
y char* argv[]
hacen lo mismo.
Además, aunque la norma dice que debe usar una de estas firmas (ni siquiera debe agregar ninguna constelación) no hay ninguna ley que tenga que usar esos dos nombres variables, pero es tan convencional ahora que son bonitas mucho universal. (es decir, puede usar argCount
y argValues
si lo desea).
Creo que te refieres a 'argc = 3' not' argc = 2'. – trojanfoe
sí, corregido – CashCow
De nada. – trojanfoe