La función main ()
Cuando un programa empieza a ejecutarse, el sistema llama a la función
main, que marca el punto de entrada del programa. De forma predeterminada, main tiene la clase de almacenamiento extern. Cada programa debe tener una función denominada main, y se aplican las restricciones siguientes:- Ninguna otra función del programa se puede llamar
main. mainno se puede definir comoinlineostatic.- No se puede llamar a
maindesde un programa.
No se puede tomar la dirección de main.
La función mainno se puede sobrecargar.
La función mainno se puede declarar con elconstexprespecificador.
La función
main se puede definir con o sin parámetros, utilizando cualquiera de los formatos siguientes:int main (void) int main ( ) int main (int argc, char *argv[]) int main (int argc, char ** argv)Aunque se puede asignar cualquier nombre a estos parámetros, normalmente se hace referencia a ellos como argc y argv. El primer parámetro, argc (recuento de argumentos) es un entero que indica cuántos argumentos se han especificado en la línea de mandatos cuando se inició el programa. El segundo parámetro, argv (vector de argumento), es una matriz de punteros a matrices de objetos de caracteres. Los objetos de matriz son series terminadas en nulo, que representan los argumentos que se especificaron en la línea de mandatos cuando se inició el programa.El primer elemento de la matriz, argv[0], es un puntero a la matriz de caracteres que contiene el nombre de programa o el nombre de invocación del programa que se está ejecutando desde la línea de mandatos. argv[1] indica el primer argumento pasado al programa, argv[2] el segundo argumento, etc.
El siguiente programa de ejemplo
backward imprime los argumentos especificados en una línea de mandatos de forma que el último argumento se imprime primero:#include <stdio.h>
int main(int argc, char *argv[])
{
while (--argc > 0)
printf(“%s ”, argv[argc]);
printf("\n");
}Invocar este programa desde una línea de mandatos con lo siguiente:
backward string1 string2da la siguiente salida:
string2 string1Los argumentos argc y argv contendrían los valores siguientes:
| Objecto | Valor |
|---|---|
argc |
3 |
argv[0] |
puntero a serie “backward” |
argv[1] |
puntero a serie “string1” |
argv[2] |
puntero a serie “string2” |
argv[3] |
NULL |