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 | |
|---|---|---|---|---|
|
Creación de Paginas Web con Html HTML es el lenguaje básico y muy sencillo que nos permite la creación de Paginas Web. Este curso ha nacido con la intención de complementar los anteriores cursos de JavaS... [26/05/05] |
|
19.993 | ||
|
PHP y MySQL. Aplicaciones Web: programación PHP I (quinta parte) Programación de aplicaciones Web con PHP y MySQL. Ahora estudiaremos el Lenguaje de programación PHP. Aprende ahora las formas de escribir las etiquetas ... [02/12/08] |
|
995 | ||
|
Programar con Flash MX Macromedia creo Flash 3, y con el introdujo un, hasta entonces, desconocido concepto en el mundo Flash, la programación. Primitivos play, stop y gotoAndPlay poblaron ento... [16/03/05] |
|
15.613 | ||
Publicar en
del.icio.us
digg
meneame