El uso de punteros en C y C ++
Enviado por poxin2 • 25 de Febrero de 2015 • Trabajo • 1.133 Palabras (5 Páginas) • 238 Visitas
Los apuntadores son una parte fundamental de C. Si usted no puede usar los apuntadores apropiadamente entonces está perdiendo la potencia y la flexibilidad que C ofrece básicamente. El secreto para C está en el uso de apuntadores.
El uso de apuntadores en C y C++ es muy importante debido a que permite hacer los programas más eficientes y más flexibles. En este artículo se explica de una manera sencilla y breve todo lo referente a la utilización de apuntadores tanto en C como en C++.
APUNTADORES
Los apuntadores en C y C++ son una herramienta muy potente de programación. Cuando los programadores cometen un error en su utilización, puede ser muy difícil encontrar el error, por lo cual es importante saber utilizarlos. El uso de apuntadores en C y C++ es muy importante debido a que permite hacer los programas más eficientes y más flexibles.
Cuando se declara una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de esta a la dirección de memoria desde donde comienzan los datos de esa variable.
Las direcciones de memoria se suelen describir como números en hexadecimal.
Un apuntador es una variable cuyo valor es la dirección de memoria de otra variable. Se dice que un apuntador “apunta” a la variable cuyo valor se almacena a partir de la dirección de memoria que contiene el apuntador.
DECLARACIÓN DE UN APUNTADOR
Para declarar un apuntador se especifica el tipo de dato al que apunta, el operador ‘*’, y el nombre del apuntador. La sintaxis es la siguiente:
<tipo de dato apuntado> *<indentificador del apuntador>
Ejemplos:
CÓdigo C y C++
int *ptr1; // Apuntador a un dato de tipo entero (int)
char *cad1, *cad2; // Dos apuntadores a datos de tipo carácter (char)
float *ptr2; // Apuntador a un dato de tipo punto-flotante (float)
ASIGANCIÓN DE APUNTADORES
Se pueden asignar a un apuntador direcciones de variables a través del operador de referenciación (‘&’) o direcciones almacenadas en otros apuntadores.
Ejemplos:
int i = 5;
int *p, *q;
p = &i; // Se le asigna a ’p’ la dirección de ’i’
q = p; // Se le asigna a ’q’ la dirección almacenada en ’p’ (la misma de ’i’)
VERIFICACIÓN DE TIPOS DE APUNTADORES
Al igual que el resto de las variables, los apuntadores se enlazan a tipos de datos especÍficos (apuntadores a variables de cierto tipo), de manera que a un apuntador sólo se le pueden asignar direcciones de variables del tipo especificado en la declaración del apuntador.
Ejemplo:
int *p1;
float *p2;
int x;
p1 = &x; // Esto es válido
p2 = &x; // Esto no es válido (el compilador genera un error)
APUNTADORES CONSTANTES Y APUNTADORES A CONSTANTES
Es posible declarar apuntadores constantes. De esta manera, no se permite la modificación de la dirección almacenada en el apuntador, pero sí se permite la modificación del valor al que apunta.
Ejemplo:
int x = 5, y = 7;
int *const p = &x; // Declaración e inicialización del apuntador constante
*p = 3; // Esto es váido
p = &y; // Esto no es válido (el compilador genera un error)
También es posible declarar apuntadores a datos constantes. Esto hace que no sea posible modificar el valor al que apunta el apuntador.
Ejemplo:
int x = 5, y = 7;
const int *p = &x; // Declaración e inicialización del apuntador a constante
p = &y; // Esto es válido
*p = 3; // Esto no es válido (el compilador genera un error)
y = 3; // Esto es válido
APUNTADORES, ARREGLOS
...