Punteros Programas

Páginas: 7 (1716 palabras) Publicado: 14 de junio de 2012
Punteros. Lenguaje C ANSI

Punteros. Lenguaje C ANSI
¿Qué es un PUNTERO?:
Un puntero es un objeto que apunta a otro objeto. Es decir,
una variable cuyo valor es la dirección de memoria de otra
variable.
No hay que confundir una dirección de memoria con el
contenido de esa dirección de memoria.
int x = 25;
Dirección
1502

...

...

25

1504

1506

1508

...

...

......

La dirección de la variable x (&x) es 1502
El contenido de la variable x es 25
Juan Antonio López Quesada

2

Punteros. Lenguaje C ANSI
Las direcciones de memoria dependen de la arquitectura
del ordenador y de la gestión que el sistema operativo
haga de ella.
En lenguaje ensamblador se debe indicar numéricamente
la posición física de memoria en que queremos
almacenar undato. De ahí que este lenguaje dependa
tanto de la máquina en la que se aplique.
En C no debemos, ni podemos , indicar numéricamente la
dirección de memoria, si no que utilizamos una etiqueta
que conocemos como variable (en su día definimos las
variables como direcciones de memoria). Lo que nos
interesa es almacenar un dato, y no la localización
exacta de ese dato en memoria.
Juan AntonioLópez Quesada

3

Punteros. Lenguaje C ANSI
Una variable puntero se declara como todas las variables.
Debe ser del mismo tipo que la variable apuntada. Su
identificador va precedido de un asterisco (*):

int *punt;
Es una variable puntero que apunta a variable que contiene
un dato de tipo entero llamada punt.

char *car:
Es un puntero a variable de tipo carácter.
long float *num;

Unpuntero tiene
su propia
dirección de
memoria:
&punt
&car

float *mat[5]; // . . .
Juan Antonio López Quesada

4

Punteros. Lenguaje C ANSI
Es decir: hay tantos tipos de punteros como tipos de
datos, aunque también pueden declararse punteros a
estructuras más complejas (funciones, struct, ficheros...) e
incluso punteros vacíos (void ) y punteros nulos (NULL).
Declaración devariables puntero: Sea un fragmento de
programa en C:
char dato;
//variable que almacenará un carácter.
char *punt;

//declaración de puntero a carácter.

punt = &dato; //en la variable punt guardamos la dirección
// de memoria de la variable dato; punt apunta
// a dato. Ambas son del mismo tipo, char.
Juan Antonio López Quesada

5

Punteros. Lenguaje C ANSI
int *punt = NULL, var = 14;punt = &var;
printf(“%#X,

%#X”, punt, &var) //la misma salida: dirección

printf(“\n%d, %d”, *punt, var); //salida: 14, 14
Hay que tener cuidado con las direcciones apuntadas:
printf(“%d, %d”, *(punt+1), var+1);
*(punt + 1) repesenta el valor contenida en la dirección de memoria
aumentada en una posición (int=2bytes), que será un valor no
deseado. Sin embargo var+1 representa el valor15.
punt + 1 representa lo mismo que &var + 1 (avance en la dirección de
memoria de var).

Juan Antonio López Quesada

6

Punteros. Lenguaje C ANSI
Al trabajar con punteros se emplean dos operadores
específicos:
} Operador de dirección: & Representa la
dirección de memoria de la variable que le sigue:
&fnum representa la dirección de fnum.
} Operador de contenido o indirección:

*El operador * aplicado al nombre de un puntero
indica el valor de la variable apuntada:
float altura = 26.92, *apunta;
apunta = &altura; //inicialización del puntero
Juan Antonio López Quesada

7

Punteros. Lenguaje C ANSI
float altura = 26.92, *apunta;
apunta = &altura; //inicialización del puntero
.printf(“\n%f”, altura);

//salida 26.92

.printf(“\n%f”, *apunta);
No se debeconfundir el operador * en la declaración del
puntero:
int *p;
Con el operador

* en las instrucciones:

*p = 27;

.

printf(“\nContenido = %d”, *p);
Juan Antonio López Quesada

8

Punteros. Lenguaje C ANSI

Veamos con un ejemplo en C la diferencia entre
todos estos conceptos
Veamos el archivo
- punt0.cpp

Ver sumpun.cpp

- punt1.cpp
Es decir:

int x = 25, *pint;...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Punteros
  • Punteros
  • Puntero
  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Los Punteros Laser

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS