Punteros

Páginas: 6 (1355 palabras) Publicado: 8 de mayo de 2014
Punteros
• Los punteros en el Lenguaje C, son variables que "apuntan", es decir que poseen la dirección de la ubicación en memoria de otra variable.
• Por medio de ellos tenemos un método
muy interesante para acceder a la memoria.
• Es una de las “especialidades” del lenguaje C.

Punteros
• Este tema suele ser bastante conflictivo
ya que muchos programadores en otros
lenguajes y nuevosen C, lo ven como
un método extraño o al menos desacostumbrado, lo que produce cierto rechazo.
• Sin embargo, a medida que uno se va
familiarizando con ellos, se convierten
en una herramienta poderosa.

Punteros
• Se usan fundamentalmente para el manejo de variables complejas, argumentos, etc.
• También los utilizamos cuando pasamos un parámetro por referencia a una
función.
• Tienentipo, igual que las variables comunes, aunque sólo contengan una dirección se debe indicar el tipo.

Declaración
• La definición de un puntero se hace de
la siguiente forma:
tipo *nombre;
Ejemplo:
int *mens;
• mens es un puntero a enteros, debemos incluir siempre el asterisco al definir punteros.

Declaración
• En forma conjunta podemos definir
variables comunes de un tipo y punterosa variables del mismo tipo.
Ejemplo:
int base, *mens;

Declaración
• La diferencia entre los tipos de la definición anterior es:
• base es una variable entera común y
el compilador reservará el espacio que
ocupa una variable entera (p. ej. 2 bytes).
• Para mens el compilador reserva el
espacio necesario para guardar una dirección.

Aritmética de Punteros
• Si solo guardan unadirección, ¿porqué
hay que asignarles un tipo?
• Cuando tenemos una secuencia de variables, pretendemos desplazar un puntero recorriéndolas, habiendo declarado
el tipo de variable a que apuntan, el sistema sabe cuántos bytes necesita saltar
para llegar a la variable siguiente o a la
anterior.

Aritmética de Punteros
Si teniendo definido el puntero p como
float *p ;

Lo movemos un lugar, p.ej.
p++ ;

El desplazamiento obtenido es el de un
elemento del tipo float.

p

Tamaño de 1 byte

Aritmética de Punteros
Si en cambio lo definimos como:
int *p ;

y lo movemos nuevamente un lugar:
p++ ;

El desplazamiento obtenido es el de un
elemento del tipo int (asumimos 2 bytes).

p

Tamaño de 1 byte

Aritmética de Punteros
Por último si lo hemos definido como:
char*p ;

y lo movemos un lugar:
p++ ;

El desplazamiento obtenido es el de un
elemento del tipo char.

p

Tamaño de 1 byte

Aritmética de Punteros
• Esto se denomina: aritmética de punteros.
• Observe que la cantidad de bytes que
se desplaza un puntero para saltar de
una variable a otra (del mismo tipo) es
enteramente dependiente del tamaño
que el sistema reserva para ese tipo devariables.
• Esto cambia con el compilador.

Operadores de Punteros
• Definimos lo siguiente:
char a, b, *c, *d ;
c = &a ;
*c = 'M' ;
d = c ;

• La primera línea dice que c y d son
punteros a char. La segunda apunta el
puntero c a la dirección de la variable a.
(que también es del tipo char)

Operadores de Punteros
• En la tercera línea se hace que el contenido del lugar dondeapunta c sea
reemplazado por el código de la letra M.
• En la cuarta línea hacemos que d apunte a donde apunta c, que es la dirección
de la variable a.
• Puede haber varios punteros apuntando
a una misma dirección.

Operadores de Punteros
• El operador * sirve definir un puntero.
• También sirve, una vez definido el
puntero para conocer el contenido de
las posiciones de memoria apuntadaspor el puntero.
• El operador & significa: la dirección
de.

Operadores de Punteros
• Por este motivo en:
c = &a;

• Decimos que c apunta a la dirección de
a.
• Esto quiere decir que estamos almacenando la dirección de a como contenido de la variable c.
• Esto es lo que contiene un puntero.

Operadores de Punteros
• En:
*c = 'M';
d = c;

• Reemplazamos el contenido de la...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Puntero
  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Los Punteros Laser
  • el puntero
  • punteros

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS