Aritmética de punteros 16-17 PDF

Title Aritmética de punteros 16-17
Course Fundamentos de programación
Institution Universidad Europea de Madrid
Pages 4
File Size 108.7 KB
File Type PDF
Total Downloads 92
Total Views 150

Summary

teoria...


Description

Aritmética de punteros Cuando declaramos un vector, por ejemplo:

#defineN5 intv[N];/*vectorde50componentesenteras*/ int*pt; Provoca lo siguiente: 1. Se reserva un bloque de memoria suficientemente grande para almacenar N componentes enteras, si el tamaño de un entero es 2 bytes, se reservan 100 bytes consecutivos para almacenar las componentes del vector 2. Por otro lado, se crea una constante puntero con el nombre del vector que apunta al inicio del bloque anterior

v[0] 10

v[1] 20

v[2] 30

v[3] 40

v[4] 50

v Como v es un puntero su valor se puede asignar a cualquier otro puntero compatible, por ejemplo pt que también es puntero a entero: pt=v; También podríamos haber conseguido que pt apunte al comienzo del vector con la siguiente asignación: pt=&v[0]; v[0] 10 v

v[1] 20

v[2] 30

v[3] 40

v[4] 50

pt

Ahora podríamos acceder a la primera componente del vector mediante índices o mediante el puntero: v[0]= 27; //equivalente a *v= 27; *pt= 27; Sin embargo el puntero v no se puede modificar, es constante, siempre apunta a la primera componente del vector. v=pt; ARITMÉTICA DE PUNTEROS: Se permiten operaciones aritméticas con punteros: − Incremento, decremento: los valores de tipo puntero se pueden incrementar y decrementar, siempre en valores enteros. Se admiten los operadores ’+’, ’−’, ’++’ y ’− −’ Esto implica un desplazamiento del puntero, equivalente a (valor incrementado)*(tamaño en bytes del tipo apuntado), por ejemplo: v[0] 10 v

v[1] 20

v[2] 30

v[3] 40

v[4] 50

pt

pt=pt+2;//Desplazaporencimaenelbloquedememoriadelvector 

Desplaza por encima el puntero 2*(tamaño de un entero), es decir las dos componentes siguientes del vector: v[0] 10

v[1] 20

v

v[2] 30

v[3] 40

v[4] 50

pt

 pt=pt‐1;//Desplazahaciaatrásenelbloquedememoriadelvector  v[0] v[1] v[2] v[3] v[4] 10 20 30 40 50 v

pt

− La suma de punteros no está permitida. La resta de punteros está permitida cuando ambos punteros apuntan al mismo vector y da como resultado el número de componentes del vector que hay entre ambos punteros Por tanto:

v

0 10

1 20

2 30

3 40

4 50

pt pt+1pt+2pt+3pt+4  Así *ptesequivalenteav[0] *(pt+1)esequivalenteav[1] *(pt+2)esequivalenteav[2] …  pt=&v[0];equivalea pt=v; v[i] equivalea*(v+i) &v[i]equivaleav+i  

 RECORRIDO de un vector con punteros:

#defineN5 intv[N];/*vectorde50componentesenteras*/ inti,*pt;  //Recorridousandoelpunterovylaarirmeticadepunteros printf("\nEscribelas%dcomponentesdelvector:",N); for(i=0;i...


Similar Free PDFs