Pages - Menu

viernes, 19 de julio de 2013

Diferencias y equivalencias entre C y C++ 3/3

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++?