Llegamos al último punto
de ésta serie de posts donde tratamos las diferencias y equivalencias entre C y
C++ básicas. Como se ha podido comprobar, es un repaso rápido de los conceptos
vistos en el curso básico de C, por lo que en éste último tema veremos los
procedimientos, funciones, punteros y listas dinámicas.
Foto tomada de freedigitalphotos.net |
Definición de una
función.
Las funciones en C++
siguen la misma estructura que en C:
tipo_retorno
identificador (parámetros)
{
instrucciones;
return (valor);
}
El tema de la declaración
y uso de variables locales y globales no varía, seguimos pudiendo acceder a las
globales y declarar locales que no se verán en ningún otro sitio.
Llamada a una función.
La estructura es la
siguiente:
variable_destino = identificador
(parámetros);
Para el paso de
parámetros por valor y por referencia es el mismo:
Paso por valor:
tipo_retorno
identificador (parámetros)
{
instrucciones;
return (valor);
}
Paso por referencia:
tipo_retorno
identificador (&parámetros)
{
instrucciones;
return (valor);
}
Las funciones recursivas
siguen la misma estructura también. A continuación os dejo el código de la
función recursiva que calcula el factorial de un número:
#include
<iostream.h>
int
a,b,factorial;
int main (void)
{
cout << "Este programa calculara
el factorial del numero entero que ingrese \nPor favor ingrese su numero "
<<endl;
cin >> a;
factorial=1;
for (b=1 ; b<=a ; b++)
{
factorial=b*factorial;
}
cout << "El factorial es "
<<factorial<<endl;
system("pause");
return 0;
}
Punteros.
La definición, estructura
y uso de los punteros no varía en absoluto.
Supongamos el puntero
siguiente:
int num1, num2, *p;
p es un puntero a int.
&p contiene la
dirección de memoria a la que apunta el puntero p.
*p contiene el valor
almacenado en la dirección de memoria a la que apunta.
Os dejo con un ejemplo de su uso:
#include <iostream>
using namespace std;
int main() {
char cadena[10] = "Hola Mundo";
char *c;
int *n;
void *v;
c = cadena; // c apunta a cadena
n = (int *)cadena; // n también apunta a cadena
v = (void *)cadena; // v también
cout << "char: " << *c << endl;
cout << "int: " << *n << endl;
cout << "float: " << *(float *)v << endl;
return 0;
}
¿Qué te ha parecido la
serie de post sobre diferencias y equivalencias entre C y C++?