El especificador constante (const)
Una constante es una entidad cuyo valor no se puede modificar, y en C++, la palabra reservada const se utiliza para declarar una constante.
const int longitud = 20;
char array[longitud]; // válido en C++ pero no en C
Una vez que una constante se declara no se puede modificar dentro del programa.
En C++ una constante debe ser inicializada cuando se declara, mientras que en ANSI C, una constante no inicializada se pone por defecto a 0.
La diferencia más importante entre las constantes en C++ y C es el modo como se declaran fuera de las funciones. En ANSI C se tratan como constantes globales y se pueden ver por cualquier archivo que es parte del programa. En C++, las constantes que se declaran fuera de una función tienen ámbito de archivo por defecto y no se pueden ver fuera del archivo en que están declaradas. Si se desea que una constante se vea en más de un archivo, se debe declarar como extern.
En C++ las constantes se pueden utilizar para sustituir a #define.
En C:
#define PI 3.141592
#define long 128
En C++:
const PI = 3.141592
const long = 128
Punteros y direcciones de constantes simbólicas
No se puede asignar la dirección de una constante no simbólica a un puntero no constante, pero sí se puede desreferenciar el puntero y cambiar el valor de la constante.
const int x=6;
int *ip;
ip = &x; //error
*ip=7;
Punteros a un tipo de dato constante
Se puede declarar un puntero a un tipo de dato constante pero no se puede desreferenciar.
const int x=6;
const int *ip; //puntero a una constante entera
int z;
ip=&x;
ip=&z;
*ip=10; //error: no se puede desreferenciar este tipo de puntero y modificar z
z=7; //válido: z no es una constante y se puede cambiar.
El puntero a un tipo constante es muy útil cuando se desea pasar una variable puntero como un argumento a una función pero no se desea que la función cambie el valor de la variable a la que está apuntada.
struct ejemplo
{
int x;
int y;
};
void funcion(const ejemplo *);
void main()
{
ejemplo e={4,5};
funcion(&e); //convertirá un puntero no constante a un puntero const
}
void funcion(const ejemplo *pe)
{ ejemplo i;
i.x=pe->x;
i.y=pe->y;
pe->x=10; } // error: no se puede desreferenciar pe.
Punteros constantes
Se puede definir una constante puntero en C++. Las constantes puntero se deben inicializar en el momento en que se declaran. Se leen de derecha a izquierda.
void main()
{
int x=1,y;
int *const xp= &x; // xp es un puntero constante a un int
xp=&y; // error: el puntero es una constante y no se puede asignar un nuevo valor a punteros constantes
*xp=4;
}
Hay 454 opiniones. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Funciones en C (primera parte) Curso de programacíon informática sobre Funciones en C en el orden de los fundamentos de la programación. Comprende el desarrollo de un software utilizando funciones y a ... [17/10/08] |
|
2.816 | ||
|
C# Curso de Programación Curso Básico de programación en C#, este curso básico abarcará desde las bases del lenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases de datos de... [14/07/05] |
|
8.486 | ||
|
Informática. Desarrollo científico del ordenador Ordenador, ciencia e informática son las claves de este curso. Conoce el desarrollo científico que hay detrás de una computadora u ordenado... [10/07/09] |
|
4.375 | ||
Publicar en
del.icio.us
digg
meneame