Está en la página 1de 14

Funciones 2013

FUNCIONES
Las funciones son un conjunto de instrucciones que realizan una tarea especfica. Son
bsicas en el desarrollo de un programa cuyo tamao sea considerable, puesto que permiten
dividir el cdigo en fragmentos pequeos que realicen una accin en especfico, facilitando
su comprensin y la correccin de errores. A estas divisiones de cdigo tambin se les
conoce como mdulos o subprogramas. El cdigo de las funciones se pueden escribir dentro
de la funcin main() o fuera de ella.
Una vez que tenemos escrita una funcin es necesario ejecutarla. Comnmente se dice
llamar a la funcin y para llamarla se puede hacer desde la funcin principal main() o
desde cualquier otra funcin del programa.
Al igual que con las variables, las funciones pueden declararse y definirse. Una declaracin
es simplemente una presentacin, una definicin contiene las instrucciones con las que
realizar su trabajo la funcin.

1. Estructura de una funcin


En general, la definicin de una funcin se compone de las siguientes secciones:
tipo_a_devolveridentificador(tipo1parmetro1,tipo2parmetro2,...)
{
tipo1Variable_Local1;
tipo2Variable_Local2;
...
Cdigodelafuncin
returnvalordeltipovaloradevolver;
}

tipo_a_devolver. Todas las funciones tienen la posibilidad de devolver un valor, aunque


pueden no hacerlo. Si definimos una funcin que nos calcula el coseno de un cierto ngulo
nos interesara que nuestra funcin devolviese ese valor. Si por el contrario nuestra funcin
realiza el proceso de borrar la pantalla no existira ningn valor que nos interese conocer
sobre esa funcin. Si no se especifica ningn parmetro el compilador supondr que
nuestra funcin devuelve un valor entero (int). Puede usarse la palabra void para el caso en
el cual no se desee devolver algn resultado.

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

identificador de la funcin. Es el nombre con el que vamos a llamar a la funcin dentro


de nuestro programa, seguido de una lista de parmetros entre parntesis y separados
por comas: (tipo1 parmetro1, tipo2 parmetro 2,...) estos parmetros representan los
valores que se envan a la funcin para que el cdigo que escribamos dentro de ella pueda
modificarlos. En el caso de la funcin coseno que se menciono antes, el parmetro sera el
ngulo con el cual queremos calcular el coseno. Los parmetros son de gran importancia, ya
que si no pudisemos definir un parmetro para nuestra funcin coseno, tendramos que
definir una funcin para cada ngulo, en la que obviamente no indicaramos ningn
parmetro.
cdigo de la funcin. En primer lugar declaramos las llaves { } que indicaran el inicio y
fin de nuestra funcin. En seguida se declaran las variables locales. Estas variables
solamente podrn ser utilizadas dentro de la funcin, es decir, solo son tiles para la
funcin donde fueron declaradas y fuera de ella son desconocidas. Con respecto al cdigo
de la funcin, simplemente se trata de las instrucciones que deseamos que la funcin
realice, por ejemplo obtener el coseno del ngulo que se recibi como parmetro.
Return. Se escribe al final antes de la llave } que cierra la declaracin de la funcin. La
instruccin return se encarga de indicar que valor se obtuvo como resultado y que es el valor
que se desea devolver a la instruccin que llam a la funcin. Por ejemplo, alguna
instruccin llam a la funcin calcular coseno y le envo como parmetro el valor del ngulo,
ahora la funcin va a calcular el valor del coseno utilizando dicho ngulo y lo que obtenga
como resultado lo reportar a la instruccin. La instruccin return puede omitirse si la
funcin no devuelve ningn valor. En otros lenguajes, las funciones que no devuelven
valores se conocen como procedimientos.
Los prototipos de la funcin son una predeclaracin de la funcin, solo indican el tipo
de dato que se devuelve, su nombre y los tipos de los parmetros, no es necesario indicar
un identificador para los parmetros. Los prototipos se declaran al inicio del programa
despus de las libreras.

2. Prototipos de funcin
Un prototipo es una declaracin de una funcin. Consiste en una definicin de la funcin sin
cuerpo y terminado con un ";". La estructura de un prototipo es:
<tipo> func(<lista de declaracin de parmetros>);
Por ejemplo: int Mayor(int a, int b);
Los prototipos sirven para indicar al compilador los tipos de retorno y los tipos de los
parmetros de una funcin, de modo que compruebe si son del tipo correcto cada vez que se
use esta funcin dentro del programa, o para hacer las conversiones de tipo cuando sea
necesario. Los nombres de los parmetros son opcionales, y se incluyen como
documentacin y ayuda en la interpretacin y comprensin del programa. El ejemplo de
prototipo anterior sera igualmente vlido y se podra poner como: int Mayor(int,int);

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013
Esto slo indica que en algn lugar del programa se definir una funcin "Mayor" que admite
dos parmetros de tipo "int" y que devolver un valor de tipo "int". No es necesario escribir
nombres para los parmetros, ya que el prototipo no los usa. En otro lugar del programa
habr una definicin completa de la funcin.
Normalmente, las funciones se declaran como prototipos dentro del programa, o se incluyen
estos prototipos desde un archivo externo, (usando la directiva "#include").
La definicin de la funcin se hace ms adelante, lo habitual es hacerlo despus de la
funcin "main".

Llamada a una funcin


Para llamar a una funcin, se escribe su nombre y entre parntesis los valores que se deseen
dar a los argumentos. Existen distintas formas de llamar a una funcin y estas dependen del
tipo funcin a quien se desea llamar:
Tipo de Funcin
Funcin que no recibe parmetros
y no devuelve resultados
Funcin que no recibe parmetros
y si devuelve resultados
Funcin que si recibe parmetros y
no devuelve resultados
Funcin que si recibe parmetros y
si devuelve resultados

Forma de llamarla
nombre_funcin( );
resultado = nombre_funcin( );
nombre_funcin(valor1, valor2, ... );
resultado = nombre_funcin(valor1, valor2, ... );

Al llamar a una funcin se puede hacer la llamada por valor o por referencia. Cuando
pasamos parmetros por valor a una funcin, sta realiza una copia de los valores de
stos en una zona de la memoria, con lo cual la funcin trabaja con estas copias de los
valores y no hay peligro de que se modifique la variable original con la que llamamos a la
funcin.
NOTA: El caso de paso de valores por referencia ser analizado en el siguiente curso de
programacin.

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

3. Funciones que no retornan valor


Un tipo de funcin son aquellas que no reciben parmetros y tampoco devuelve resultados.
En este caso hay que indicarle que el valor que devuelve es de tipo void y para indicar que
no recibir parmetros tambin utilizamos el tipo void. Cuando realizamos una llamada no
hace falta indicarle nada, solo se abren y cierran los parntesis.
#include <stdio.h>
void suma(void);
void main(void){
int total;
printf(Suma valores \n);
suma( );
}
void suma(void){
int a, b, total;
printf(Dame los valores:);
scanf(%d%d,&a,&b);
total = a + b;
printf(El resultado es %d,total);
}

4. Funciones que retornan valor


Otro tipo de funciones son las que no reciben parmetros y si devuelve resultados. El
resultado es devuelto una vez que se ha terminado de realizar las operaciones que estn
dentro de la funcin. NOTA: solo se puede devolver un resultado a la vez.

Estatuto return
La devolucin se realiza mediante el estatuto return, que adems de devolver un valor hace
que la ejecucin del programa vuelva al cdigo que llamo a esa funcin. En este tipo de
funciones siempre se debe indicar el tipo de valor que se va a devolver poniendo delante del
nombre de la funcin el tipo de dato. En este caso la funcin es como si fuera una variable,
pues toda ella equivale al valor que devuelve.
#include <stdio.h>
int suma(void);
void main(void){
int total;
printf(Suma valores \n);
total = suma( );
printf(\n %d,total);
}

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

int suma(void){
int a, b, total_dev;
printf(Dame los valores:);
scanf(%d%d,&a,&b);
total_dev = a + b;
return total_dev;
}

5. Paso de parmetros
Las palabras parmetro y argumento, aunque de significado similar, tiene distintas
connotaciones semnticas: Se denominan parmetros los tipos declarados en el prototipo de
la funcin y se le llama argumentos a los "valores" que se pasan de una funcin a otra.
Aunque por lo general siempre les llamamos igual.

Parmetros por valor


Como lo mencionamos anteriormente, el paso de parmetros por valor a una funcin, se
realiza una copia de los valores en una zona de la memoria, la funcin trabaja con estas
copias de los valores y no hay peligro de que se modifique el valor de la variable original.
Existen dos tipos de funciones que reciben parmetros:

Funciones que reciben parmetros y no retornan valores


El siguiente tipo de funcin, recibe valores (parmetros) realiza operaciones con ellos y al
terminar las instrucciones regresa el flujo a la instruccin que llamo a la funcin. Los
parmetros se deben declarar en el mismo orden en que se envan.
#include<stdio.h>
voidsuma(inta,b);
voidmain(void)
{
printf(Sumavalores\n);
printf(Damelosvalores:);
scanf(%d%d,&a,&b);
suma(a,b);
}
voidsuma(inta,b)
{
total=a+b;
printf(\n%d,total);
}

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

Funciones que reciben parmetros y si retornan valores


El ltimo tipo de funcin, recibe valores (parmetros), realiza operaciones con ellos y al
finalizar devuelve un resultado. Es importante indicar en el encabezado de la funcin el tipo
de dato que se devuelve.
#include<stdio.h>
intsuma(inta,b);
voidmain(void)
{
inttotal;
printf(Sumavalores\n);
printf(Damelosvalores:);
scanf(%d%d,&a,&b);
total=suma(a,b);
}
intsuma(inta,b)
{
total_dev;
total_dev=a+b;
returntotal_dev;
}

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013
FUNCIONES Y PASO DE PARAMETROS (Resumen)
Las palabras parmetro y argumento, aunque de significado similar, tiene distintas
connotaciones semnticas: Se denominan parmetros los tipos declarados en el prototipo de
la funcin y se le llama argumentos a los "valores" que se pasan de una funcin a otra.
Aunque por lo general siempre les llamamos igual
Una vez que entendimos que es un parmetro o argumento (le puedes decir como quieras)
vamos a enfocarnos a ver como se manejan las funciones y el paso de valores (parmetros)
en el lenguaje ANSI C.

Funciones
Una funcin es una pequea parte de cdigo que se encarga de realizar una sola tarea, de
tal forma que nuestro programa puede estar formado por cualquier nmero de funciones,
donde cada una hace algo distinto, y todas en conjunto se encargan de resolver un
problema.
Por ejemplo, el cuerpo humano tiene distintas partes, cada una se encarga de una actividad
diferente (ojos, corazn, boca, odos, etc.) pero si juntamos cada parte, logramos que una
persona pueda vivir. As pasa con un programa: cada funcin hace algo y todas logran un
resultado.

Declaracin de una Funcin


Para declarar una funcin debemos seguir la siguiente sintaxis:
tipo_devuelto nombre_funcin (parmetros_cada_uno_con_su_tipo_de_dato){
//aqu vamos a escribir las instrucciones que debe realizar la funcin
return expresin;
}

tipo_devuelto
Si el tipo_devuelto es void, se considera que la funcin no devuelve ningn valor, por lo
tanto, no debe escribirse la palabra return.
Si el tipo_devuelto es cualquiera de los siguientes:
char
float
struct

short

int

long

unsigned

double

union

enum

auto

extern

static

register

Entonces se debe escribir la palabra return junto con el valor que se desea retornar.
! Recuerda: si vas a devolver un valor, ste debe ser del mismo tipo de dato que la
funcin va a devolver (tipo_devuelto).
nombre_funcin
El nombre de la funcin debe ser de acuerdo a lo que esa parte de cdigo va a realizar, as
que es importante que no inventes nombres y que escribas el nombre lo ms parecido
posible a lo que esa funcin hace. El nombre siempre debe comenzar con una letra
minscula y si est formado por dos o ms palabras, la segunda palabra y debe comenzar
con una letra mayscula. Por ejemplo:

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

captura
//nombre sencillo y comienza con minscula
mostrarDatos
//nombre compuesto y comienza con minscula y luego mayscula
calcularSueldoNeto //nombre compuesto y comienza con minscula y luego mayscula
(parmetros_cada_uno_con_su_tipo_de_dato)
Los parmetros son los nombres de las variables que la funcin va a recibir para trabajar con
ellos. Ms adelante veremos que los parmetros se pueden recibir por valor o referencia. !
Recuerda: cada parmetro debe ir junto con su tipo de dato.

Llamada de una Funcin


Ahora veamos cmo hacer que las funciones se ejecuten. Para esto deben ser llamadas. La
llamada a una funcin se puede hacer desde cualquier parte del programa, por lo general la
funcin main es quien llama a las dems funciones, aunque por lo general se acostumbra
hacer una funcin con un men, y dependiendo de la opcin seleccionada se hace la llamada
a la funcin que corresponda. Existen distintas formas de llamar a una funcin y estas
dependen del tipo de funcin:
NO recibe
valores

TIPOS DE FUNCIONES Y FORMA DE LLAMARLAS


parmetros y NO retorna NO recibe parmetros y SI retorna
valores

void nombre_funcion( ){
// cdigo de la funcin
}
Ejemplo:

tipo_devuelto nombre_funcion( ){
// cdigo de la funcin
return valor;
}
Ejemplo:

void captura( ){
int id;
printf(Dame tu id);
scanf(%d,&id);
}

int captura( ){
int id;
printf(Dame tu id);
scanf(%d,&id);
return id;

Para llamar a este tipo de funcin:

}
Para llamar a este tipo de funcin:

// id es del mismo tipo que devuelve la funcin

void main( ){
captura( );
}

void main( ){
int res;
res = captura( );
}

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

SI recibe
valores

parmetros

TIPOS DE FUNCIONES
NO retorna SI recibe
valores

void nombre_funcion(tipo nomvar, tipo nomvar){

// cdigo de la funcin
}

parmetros

SI

retorna

tipo_devuelto nombre_funcion(tipo nomvar, tipo


nomvar){

// cdigo de la funcin
return valor;

Ejemplo:

}
Ejemplo:

void mostrarDatos(int id, float calif){

float calcularPromedio(float calif1, float calif2){

printf(El alumno %d tiene la calif %f, id, calif);

float prom;
prom = (calif1 + calif2) / 2;
return prom;
//prom es del mismo tipo que devuelve la funcin

Para llamar a este tipo de funcin:


void main( ){
int id =15;
float calif = 8.5;
mostrarDatos(id, calif);
}

}
Para llamar a este tipo de funcin:
void main( ){
float calif1 = 8.5, calif2 = 9.4, res;
res = calcularPromedio(calif1, calif2);
}

Paso de parmetros
Los parmetros se pasan normalmente por valor, pero tambin se pueden pasar por
referencia. El paso de parmetros por referencia admite dos tipos de sintaxis: escribiendo el
operador & antes del nombre del parmetro y otro caso es escribiendo el operador *
(asterisco) antes del nombre del parmetro (esto lo analizaremos cuando veamos
apuntadores).
Paso de parmetros es por valor:
int funcion1 (int x, int y)
Esto quiere decir que la funcin1 recibir nicamente el valor de los dos parmetros, x e y.
Podr utilizar esos valores dentro de su cdigo, e incluso podr cambiarlos. Pero cualquier
cambio en x e y no afectar a los parmetros actuales, es decir, a los parmetros del
programa que llam a funcin1.
Llamada a la funcin:
resultado = funcion1 ( x, y);

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

Funciones 2013

Paso de parmetros por referencia con el operador &


int funcion2 (int x, int *y)
En esta funcin, el parmetro x se pasa por valor y el parmetro y se pasa por
referencia. Por lo que esta funcin podr hacer cambios en la variable x sin afectar al
valor original, mientras que los cambios que haga a la variable y se vern reflejados en
todo el programa.
Llamada a la funcin:
resultado = funcion2 ( x, &y);
Veamos un resumen de cmo pasar datos por valor y por referencia, adems de cmo deben
ser recibidos por la funcin:
PASO DE PARAMETRO

FORMA DE RECIBIRLO

Por valor:
mostrar(id, prom, gpo);

void mostrar(int id, float prom, char gpo);

Por referencia:
mostrar(&id,
&gpo);

&prom,

void mostrar(int *id, float *prom, char *gpo);

Parmetros por valor y por referencia


En C++ existe el paso de parmetros por valor y por referencia a una funcin, en el
paso de parmetros por valor, sabemos que se crea una copia local en la funcin, que
almacena el mismo valor enviado por el argumento, adems no existe ninguna relacin entre
dichas variables de manera que el valor de la variable involucrada en la llamada es ajena a
cambios. A diferencia del paso de parmetros por valor, el paso de parmetros por referencia
permite que la funcin invocada modifique el valor original de las variables usadas como
argumentos. Ms adelante veremos que en C++ es posible emplear dos mecanismos
diferentes de referencia de variables.
En C existe el paso de parmetros por referencia empleando el operador de referencia &,
que especifica que la direccin de la variable ser pasada como argumento, de tal manera
que la funcin deber recibir como parmetro un puntero del mismo tipo de la variable, lo
que implica que podemos modificar el contenido de dicha variable, empleando el puntero
como vehculo de direccin auxilindonos del operador de dereferencia (*) sobre el mismo
puntero.
En C++ existen los mismos mecanismos de referencia que en C, pero, adems es posible
realizar un tipo de referencia creando un alias del identificador de la variable, de esta
manera el argumento es referenciado de manera natural, y en la funcin es recibido con un
alias empleando el operador de referencia &, de tal manera que sigue siendo la misma
variable referenciada.

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

10

Funciones 2013
El siguiente ejemplo ilustra la manera en que se realiza el paso de parmetros en C++:
#include <iostream>
using namespace std;
void cambio( int , int * , int &); /* El primer argumento ser pasado por
valor, el siguiente por referencia y el ltimo por referencia de alias */
int main()
{
int A = 5, B = 7, C = 10; // A vale 5, B vale 7 y C vale 10
cout << "valores antes de la llamada \n"
<< "A = "<< A <<" B = "<< B << " C = "<< C << endl;
/* A es pasada por valor, mientras que B y C se van por referencia */
cambio( A, &B, C ); /* despus de la llamada a cambio, A sigue
valiendo 5, B vale 9 y C vale 32 */
cout << "valores despus de la llamada \n"
<< "A = "<< A <<" B = "<< B << " C = " << C << endl;
}
/* valor copia nicamente el valor de la variable A, mientras que ref recibe la direccin de B,
y la variable C es recibida como referencia de "sobrenombre o alias" en alias */
void cambio( int val, int *ref, int &alias )
{
val += 7; // val <-parmetro por valor
(*ref) += 3; // ref <-parmetro por referencia
alias += val + (*ref)--; //alias <-parmetro por referencia alias
}
valores antes de la llamada
A=5 B=7
C = 20
valores despus de la llamada
A=5 B=9
C = 32
Direcciones y valores de las variables en la funcin main antes de la llamada a cambio()

Valores en la funcin cambio() antes de finalizar su ejecucin, es decir las variables locales a
cambio(). La variable val recibe el valor de A (5) y se suma 7, se crea un puntero ref que
apunta a la direccin de B (7) e indirectamente le agrega 3 y se le resta 1. Finalmente la
variable alias que en esencia se trata de la misma variable C, note como se tiene la misma
direccin de memoria que C, o sea que se trata de la misma variable, no se cre ninguna
variable local en la funcin cambio(), solo se recibe la referencia directa de la misma
variable.

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

11

Funciones 2013

Los valores en la funcin main despus de la llamada a cambio() note como A nunca cambio
su valor, mientras que las otras dos s.

En la funcin cambio, la variable valor copia nicamente el valor de la variable A, de esta


forma val es una variable local y al finalizar la funcin dicha variable ser destruida. Por otro
lado el puntero ref, recibe la direccin de la variable B, lo que implica que su valor podr ser
modificado utilizando el operador de de-referencia. Finalmente la variable C es enviada a la
funcin y recibida como referencia de sobrenombre (alias), lo que implica que su direccin es
referenciada por alias, de tal forma que podemos modificar sin problema su contenido. La
ventaja de la referencia por sobrenombre o alias" es que podemos referirnos a la misma
variable por un sobre nombre.
La referencia por alias es quizs uno de los mecanismos de programacin ms cercano al
concepto real de referencia que se aplica en la mayora de los lenguajes orientados a
objetos, de manera que resulta un mecanismo muy til, simple y econmico de referencia.

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

12

Funciones 2013

Argumentos de la funcin main


Durante la compilacin de un programa, el compilador realiza una fase llamada enlazado
donde el "linker" aade a cualquier programa en C++ un mdulo especial, de inicio, que es
realmente el punto de entrada a la ejecucin del programa.
Este mdulo realiza diversas tareas previas a la ejecucin de un programa. Por ejemplo,
iniciar todas las variables estticas o globales y realizar determinadas verificaciones del
hardware. Finalmente pasa el control a la funcin principal que es la funcin main y le pasa
algunos argumentos (parmetros) que ha recibido a su vez del Sistema Operativo; esta es la
razn por la que todos los programas C++ deben contener una funcin con el nombre main.
As pues, main representa el punto de la ejecucin a partir del cual el programador toma el
control de la ejecucin, el punto de finalizacin de esta funcin y el punto de retorno (return)
que indica el fin del programa. Es importante recordar que existe otra forma de terminar el
programa, que puede ser utilizada desde cualquier punto (sin necesidad de volver a la
funcin main), y consiste en utilizar la funcin exit de la Librera Estndar.
Argumentos. Los argumentos son enviados desde la lnea de rdenes del DOS a un
programa en C++. Los argumentos son recibidos por la funcin main mediante dos variables
predefinidas dentro del lenguaje:
int main(int argc, char *argv[])
argc es un valor entero que contiene el nmero de argumentos que se han introducido.
argv es un arreglo de punteros a caracteres.
Por convencin, argv[0] es el nombre con que se ha llamado al programa (normalmente ser
el nombre del archivo ejecutable incluyendo su direccin completa -path-). Este dato es
proporcionado automticamente por el SO; as pues, el valor mnimo para argc es 1. Despus
seguirn los que introduzcamos en la lnea de comandos, separados por espacios.

Ejemplo:
#include <stdio.h>

// Prueba de parmetros para funcin main

int main(int argc, char* argv[]) {


int i;
printf("Se han pasado %3d argumentos:\n", argc);
for(i=0; i<argc; i++)
printf("%5d- %s\n", i, argv[i]);
return 0;
}
Si introducimos en la lnea de comandos: prueba se pasan seis, parmetros, se obtiene la
siguiente salida:
Se han pasado 6 argumentos:
1- C:\PRUEBA.EXE
2- prueba
3- se
Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

13

Funciones 2013
4- pasan
5- seis,
6- parmetros
Se ha dicho que argv es un puntero a matriz de punteros, y en el ejemplo hemos utilizado la
expresin argv[i], algo que a primera vista puede chocar, ya que argv no es una matriz. En
realidad la declaracin completa: char* argv[] significa puntero-a-matriz-de-caracteres, para
distinguirlo de char* argv que sera simplemente puntero-a-carcter.
Los argumentos anteriores son recogidos por el sistema en forma de sendas variables
globales _argc y _argv definidas en la cabecera <dos.h>. A continuacin se expone una
variacin del programa anterior que utiliza estas variables:
#include <iostream>
using namespace std;
#include <dos.h>
// necesario para _argc y argv
int main (int argc, char* argv[]) {
cout << "Se han pasado " << _argc << " argumentos:" << endl;
for (int i = 0; i < _argc; ++i)
cout << " " << i << "- " << _argv[i] << endl;
return 0;
} //La salida es la misma que en el caso anterior.
Restricciones
La funcin main adolece de ciertas limitaciones que la diferencian del resto de funciones
C++:
No puede ser invocada explcitamente a lo largo del programa, es invocada de forma
automtica por el mdulo de inicio
No puede obtenerse su direccin, por lo tanto no pueden declararse punteros a ella:
int (* pmain)() = &main; // Error!!
No puede ser sobrecargada
No puede ser declarada como inline
main debe estar en el espacio global de una de las unidades de compilacin del
programa, lo que significa que no puede pertenecer a una clase.

Dra. Estela Lizbeth Muoz Andrade , M David Alejandro Montoya Murillo

14

También podría gustarte