logo3.gif (8200 bytes)

Arriba ] Tipos de datos ] [ Declaración de variables ]

Por Alberto Valero para la Web del Programador

DECLARACIÓN DE VARIABLES

En C++ la declaración de variables se puede realizar en cualquier parte del programa, no necesariamente al principio del mismo como es el caso de otros lenguajes de programación como Turbo Pascal, esto facilita notablemente la tarea al programador, ya que, por una parte no se ve obligado a tener una sección de declaración de variables en la que al acumularse un gran número de ellos produce una confusión a la hora de recordar para que servía cada una; por otro lado permite declarar las variables justo en el momento de ser utilizadas, por lo que al hacer una lectura rápida del código sabremos para qué se utiliza exactamente cada una. Sin embargo esto también tiene un inconveniente, y es el hecho de que si hemos utilizado muchas variables distintas podemos utilizar los mismo identificadores para varias de ellas, lo que ocasionaría que el programa no funcionase correctamente o nos diera errores de compilación.

En C++ las variables se declaran anteponiendo el tipo de dato al nombre del identificador, pudiéndose actualizar el valor de la variable en la misma declaración o haciéndolo más tarde.

int no_matricula = 99123;
char si = 's';
double pi;

   Las variables por su parte pueden tener distinto tipo de almacenamiento, dependiendo éste de las partes del código en el que van a ser utilizadas.

Existen cuatro tipos de almacenamiento.

Static:
    Una variable estática existe desde que el programa comienza su ejecución y dura hasta que el programa termina. Esta característica permite retener el valor de una variable incluso aunque la ejecución del programa salga fuera del ámbito en el que ha sido declarada. Se declara anteponiendo la palabra reservada static a la declaración de la variable. Considere el siguiente fragmento de código:

ejemplo( )
{
    static int x=0;
   x++;
   ...
}

    En este caso, static modifica la declaración de la variable x, que por defecto es local a la función, de manera que si bien el ámbito de x sigue siendo la función (no se puede utilizar fuera de ella), ésta no se destruye una vez ejecutada la función, sino que sigue en memoria conservando su valor, y si la función es llamada por segunda vez, el valor de la variable x ya no será 0 sino 1.

    Las variables globales que se declaran en cada archivo son por defecto static.

    De los tipos de almacenamiento este el se más importante que utilizaremos en este curso.

Extern
    La palabra reservada extern sirve para declarar un nombre de función o variable como externa, y permite referencia una declaración que se encuentra en otro archivo. Esta característica fue diseñada originalmente para facilitar la compilación separada de archivos, en este curso, no la utilizaremos de momento.

Auto
    Es la declaración de una variable local, es la que se utiliza por defecto en las funciones.

Register
   Cuando a la declaración de una variable le antecede la palabra reservada register se indica al compilador que la variable se almacenará en uno de los registros del hardware del microprocesador. La palabra clave register, en una sugerencia, no un mandato, al compilador. Una variable register debe ser local a una función. La razón de utilizar variables register reside en que las operaciones sobre los valores situadas en los registros son normalmente más rápidas que las realizadas sobre valores situados en memoria, por lo que se aumente la eficacia y velocidad del programa.

               Una aplicación típica es el uso de una variable register como variable de control de un bucle; de este modo se reduce el tiempo en el la CPU requiere para buscar el valor de la variable en memoria. Por ejemplo:

register int i;
for (i=1; i<10000; i++)
    {...}

CONVERSIÓN EXPLÍCITA DE TIPOS DE DATOS

En C++ está permitida una conversión explícita del tipo de una expresión median una construcción denominada cast que tiene la forma nombre_del_tipo (expresión).

La expresión es convertida al tipo especificado. Por ejemplo la función raíz cuadrada (sqrt) devuelve un resultado de tipo double. Para poder asignar este resultado a una variable de otro tipo, por ejemplo de tipo int, tendremos que escribir:

int a;
a = int (sqrt ( 2 ));

Una variable de un determinado tipo no siempre puede ser convertida explícitamente a otro tipo.

 

Anterior

Este curso esta albergado en La Web del Programador