+ All Categories
Home > Documents > PUNTEROS DOBLES EN C

PUNTEROS DOBLES EN C

Date post: 06-Jan-2017
Category:
Upload: truongnguyet
View: 250 times
Download: 0 times
Share this document with a friend
34
PUNTEROS DOBLES EN C PUNTEROS DOBLES EN C XIII CUIEET – MASPALOMAS XIII CUIEET – MASPALOMAS Sidonio Pérez Matilla Sidonio Pérez Matilla EUITI de Eibar EUITI de Eibar UPV UPV
Transcript
Page 1: PUNTEROS DOBLES EN C

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

XIII CUIEET – MASPALOMASXIII CUIEET – MASPALOMAS

Sidonio Pérez MatillaSidonio Pérez MatillaEUITI de EibarEUITI de Eibar

UPVUPV

Page 2: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 22

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

• INTRODUCCIÓN.INTRODUCCIÓN.• DEFINICIONES DE PUNTERO y PUNTERO DOBLE.DEFINICIONES DE PUNTERO y PUNTERO DOBLE.• MAPA DE MEMORIA DE UN PROGRAMA CON PUNTEROS.MAPA DE MEMORIA DE UN PROGRAMA CON PUNTEROS.• FUNCIONES DE USUARIO Y PUNTEROS.FUNCIONES DE USUARIO Y PUNTEROS.• EJEMPLO 1.EJEMPLO 1.

– CÓDIGO FUENTE.CÓDIGO FUENTE.– RESULTADOS.RESULTADOS.– MAPA DE MEMORIA.MAPA DE MEMORIA.

• EJEMPLO 2.EJEMPLO 2.– RESULTADOS.RESULTADOS.

Page 3: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 33

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

INTRODUCCIÓNINTRODUCCIÓN

Un ejemplo sencillo de un concepto del Un ejemplo sencillo de un concepto del lenguaje C difícil de entender:lenguaje C difícil de entender:

LOS PUNTEROS DOBLESLOS PUNTEROS DOBLES

Page 4: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 44

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

DEFINICIÓN DE PUNTERODEFINICIÓN DE PUNTERO

Variable cuyos posibles valores son Variable cuyos posibles valores son direcciones de otras variables.direcciones de otras variables.

DEFINICIÓN DE PUNTERO DOBLEDEFINICIÓN DE PUNTERO DOBLE

Variable cuyos posibles valores son Variable cuyos posibles valores son direcciones de otras variables puntero.direcciones de otras variables puntero.

int x=5, y[50], *p1=&y[0], **p2=&p1;int x=5, y[50], *p1=&y[0], **p2=&p1;

Page 5: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 55

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

MAPA DE MEMORIA DE UN PROGRAMA CONMAPA DE MEMORIA DE UN PROGRAMA CONPUNTEROSPUNTEROS

Una tabla donde se relacionan Una tabla donde se relacionan identificadores, direcciones y contenidosidentificadores, direcciones y contenidos

int x=5, y[50], *p1=&y[0], **p2=&p1;int x=5, y[50], *p1=&y[0], **p2=&p1;

Page 6: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 66

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

…………......

……......……

p2p265102651026510465104

p1p165002650026510265102

Y[49]Y[49]6510065100

..................

Y[0]Y[0]6500265002

xx556500065000

IDENTIFICADORIDENTIFICADORCONTENIDOCONTENIDODIRECCIONDIRECCION

Page 7: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 77

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

FUNCIONES DE USUARIO Y PUNTEROSFUNCIONES DE USUARIO Y PUNTEROS

Las funciones de usuario pueden usar punteros:Las funciones de usuario pueden usar punteros:– En el valor devuelto; en los PF; en variables locales o globales:En el valor devuelto; en los PF; en variables locales o globales:

int *f1(int *A, int B, int C)int *f1(int *A, int B, int C) // interface// interface{{

int *p1, …;int *p1, …;……return (p1);return (p1);

}}

Analiza una tabla de enteros de Analiza una tabla de enteros de BxC siendo A su dirección de BxC siendo A su dirección de comienzo y devuelve la dirección comienzo y devuelve la dirección del máximo.del máximo.

Page 8: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 88

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

FUNCIONES DE USUARIO Y PUNTEROSFUNCIONES DE USUARIO Y PUNTEROS

Las funciones que devuelven varios valores usan PF por referencia paraLas funciones que devuelven varios valores usan PF por referencia para “ “devolver” los resultados que no pueden ser devueltos con un return:devolver” los resultados que no pueden ser devueltos con un return:

float f2(int *A, int B, int C, int *D, int *E) // D y E: dir de var intfloat f2(int *A, int B, int C, int *D, int *E) // D y E: dir de var int{{

int *p1, *p2, f, c, acu;int *p1, *p2, f, c, acu;……*D = *p1;*D = *p1; // un int// un int*E = *p2;*E = *p2; // un int// un intreturn ((float)acu/B*C);return ((float)acu/B*C); // un float// un float

}}

Analiza una tabla de Analiza una tabla de enteros de BxC siendo A enteros de BxC siendo A su dirección de comienzo y su dirección de comienzo y devuelve el Vmed, y el devuelve el Vmed, y el máximo y mínimo a través máximo y mínimo a través de D y E.de D y E.

Page 9: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 99

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

FUNCIONES DE USUARIO Y PUNTEROSFUNCIONES DE USUARIO Y PUNTEROS

Cuando una función de usuario ha de devolver direcciones a través de Cuando una función de usuario ha de devolver direcciones a través de PF pasados por referencia estos se definen como punteros dobles:PF pasados por referencia estos se definen como punteros dobles:

int *f3(int *A, int B, int C, int **D) // D: dir de una var *intint *f3(int *A, int B, int C, int **D) // D: dir de una var *int{{

int *p1, …;int *p1, …;……*D = expresión;*D = expresión; // una dirección// una direcciónreturn (p1);return (p1);

}}

Analiza una tabla de Analiza una tabla de enteros de BxC siendo A su enteros de BxC siendo A su dirección de comienzo y dirección de comienzo y devuelve la dirección del devuelve la dirección del máximo, y también la máximo, y también la dirección del mínimo a dirección del mínimo a través de D.través de D.

Page 10: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1010

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

EJEMPLO 1EJEMPLO 1

Escribir un programa en C que intercambieEscribir un programa en C que intercambieentre sí las vocales primeras y últimas de entre sí las vocales primeras y últimas de dos cadenas.dos cadenas.

Hola, Adios --> HAlo, odiasHola, Adios --> HAlo, odias

Page 11: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1111

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

#include <stdio.h>#include <stdio.h>#include <conio.h>#include <conio.h>int main()int main(){{

/* ...... PARTE DECLARATIVA ...... *//* ...... PARTE DECLARATIVA ...... */char s1[80], s2[80], *p11, *p12, *p21, *p22;char s1[80], s2[80], *p11, *p12, *p21, *p22;char *f1(char *, char **);char *f1(char *, char **); // prototipo// prototipovoid f2(char *, char *);void f2(char *, char *); // prototipo// prototipo

Page 12: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1212

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

/* ...... PARTE EJECUTIVA ...... *//* ...... PARTE EJECUTIVA ...... */clrscr(); clrscr(); // limpia pantalla usuario// limpia pantalla usuario

// 1: Leer dos cadenas desde el teclado:// 1: Leer dos cadenas desde el teclado:printf("\n\tTeclea una cadena: "); printf("\n\tTeclea una cadena: "); gets(s1);gets(s1);printf("\n\tTeclea otra cadena: "); printf("\n\tTeclea otra cadena: "); gets(s2);gets(s2);

Page 13: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1313

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

// 2: visualizar las cadenas tecleadas:// 2: visualizar las cadenas tecleadas:puts("\n\n\tCadenas iniciales: ”);puts("\n\n\tCadenas iniciales: ”);printf(“\ts1: %s \n\ts2: %s", s1, s2);printf(“\ts1: %s \n\ts2: %s", s1, s2);

Page 14: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1414

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

// 3: Buscar direcciones de las vocales // 3: Buscar direcciones de las vocales primera y última de cada cadena:primera y última de cada cadena:p11 = f1(s1, &p12);p11 = f1(s1, &p12); // llamada función// llamada funciónp21 = f1(s2, &p22);p21 = f1(s2, &p22); // llamada función// llamada función

Page 15: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1515

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

// 4: Intercambiar primeras vocales s1-s2:// 4: Intercambiar primeras vocales s1-s2:f2(p11, p21);f2(p11, p21); // llamada a función// llamada a función

// 5: Intercambiar últimas vocales s1-s2:// 5: Intercambiar últimas vocales s1-s2:f2(p12, p22);f2(p12, p22); // llamada a función// llamada a función

Page 16: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1616

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

// 6: visualizar las cadenas tratadas:// 6: visualizar las cadenas tratadas:puts("\n\n\tCadenas finales: “);puts("\n\n\tCadenas finales: “);printf(“\ts1: %s \n\ts2: %s", s1, s2);printf(“\ts1: %s \n\ts2: %s", s1, s2);

Page 17: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1717

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

printf("\n\tPulsa tecla para terminar ... ");printf("\n\tPulsa tecla para terminar ... ");getch(); getch(); // pantalla usuario// pantalla usuarioreturn 0;return 0;

}} // del main()// del main()

Page 18: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1818

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

/*--------------------------------------------------------------------- /*--------------------------------------------------------------------- Analiza cadena y devuelve dirs primera y última vocal o del Analiza cadena y devuelve dirs primera y última vocal o del \0 si no hay vocales:\0 si no hay vocales:

DEVUELVE: dirección de la primera vocal o del \0.DEVUELVE: dirección de la primera vocal o del \0.A: dirección de comienzo de la cadena.A: dirección de comienzo de la cadena.B: dir *char para devolver dir última vocal o del \0B: dir *char para devolver dir última vocal o del \0

---------------------------------------------------------------------*/---------------------------------------------------------------------*/char *f1(char *A, char **B)char *f1(char *A, char **B) // interface// interface{{ // código// código

char *p1, *p1voc, *puvoc;char *p1, *p1voc, *puvoc;

Page 19: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 1919

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

// búsqueda de la primera vocal o del \0// búsqueda de la primera vocal o del \0for (p1=A; *p1 != '\0'; p1++)for (p1=A; *p1 != '\0'; p1++){{

if (*p1=='a'||*p1=='e'||*p1=='i'||*p1=='o'||*p1=='u'if (*p1=='a'||*p1=='e'||*p1=='i'||*p1=='o'||*p1=='u' ||*p1=='A'||*p1=='E'||*p1=='I'||*p1=='O'||*p1=='U')||*p1=='A'||*p1=='E'||*p1=='I'||*p1=='O'||*p1=='U'){{

break;break;}}

}}p1voc = p1;p1voc = p1; // dir primera vocal o \0// dir primera vocal o \0

Page 20: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2020

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

// búsqueda de la última vocal o del \0// búsqueda de la última vocal o del \0for (p1=A; *p1 != '\0'; p1++)for (p1=A; *p1 != '\0'; p1++){{

;;}}

Page 21: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2121

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

for (p1--; p1 >= A; p1--)for (p1--; p1 >= A; p1--){{

if (*p1=='a'||*p1=='e'||*p1=='i'||*p1=='o'||*p1=='u'if (*p1=='a'||*p1=='e'||*p1=='i'||*p1=='o'||*p1=='u' ||*p1=='A'||*p1=='E'||*p1=='I'||*p1=='O'||*p1=='U')||*p1=='A'||*p1=='E'||*p1=='I'||*p1=='O'||*p1=='U'){{

break;break;}}

}}

Page 22: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2222

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

if (*p1voc == '\0')if (*p1voc == '\0'){{

puvoc = p1voc;puvoc = p1voc; // A sin vocales// A sin vocales}}elseelse{{

puvoc = p1;puvoc = p1; // A con vocal/es// A con vocal/es}}

Page 23: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2323

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

*B = puvoc;*B = puvoc; // Devolver dir ult vocal// Devolver dir ult vocalreturn (p1voc);return (p1voc); // Devolver dir pri vocal// Devolver dir pri vocal

}}

Page 24: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2424

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

CÓDIGO FUENTE DEL EJEMPLO 1 CÓDIGO FUENTE DEL EJEMPLO 1

/* Intercambia 2 char’s dados por sus dirs A y B *//* Intercambia 2 char’s dados por sus dirs A y B */void f2(char *A, char *B)void f2(char *A, char *B) // interface// interface{{ // código// código

char aux;char aux;aux = *A; aux = *A; *A = *B; *A = *B; *B = aux;*B = aux;

}}

Page 25: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2525

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

RESULTADOS DEL EJEMPLO 1RESULTADOS DEL EJEMPLO 1

Page 26: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2626

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

RESULTADOS DEL EJEMPLO 1RESULTADOS DEL EJEMPLO 1

Combinaciones de vocales en s1 y s2:Combinaciones de vocales en s1 y s2:0: sin vocales.0: sin vocales. 1: una vocal.1: una vocal. 2+: dos o mas vocales.2+: dos o mas vocales.

2+ 2+2+ 2+2+ 12+ 12+ 02+ 0

1 2+1 2+1 11 11 01 0

0 2+0 2+0 10 10 00 0

Page 27: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2727

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

RESULTADOS DEL EJEMPLO 1RESULTADOS DEL EJEMPLO 1

odias\0…odias\0…

HAlo\0…HAlo\0…

s2 y s2s2 y s2

p12=&s1[3] -> ‘o’ p12=&s1[3] -> ‘o’ p22=&s2[3] -> ‘a’p22=&s2[3] -> ‘a’

p21=&s2[0] -> ‘A’ p21=&s2[0] -> ‘A’ p22=&s2[3] -> ‘o’p22=&s2[3] -> ‘o’Adios\0…Adios\0…

p11=&s1[1] -> ‘A’ p11=&s1[1] -> ‘A’ p21=&s2[0] -> ‘o’p21=&s2[0] -> ‘o’

p11=&s1[1] -> ‘o’ p11=&s1[1] -> ‘o’ p12=&s1[3] -> ‘a’p12=&s1[3] -> ‘a’Hola\0…Hola\0…

f2(…)f2(…)f1(…)f1(…)s1 y s2s1 y s2

Page 28: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2828

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN CMAPA DE MEMORIA DEL EJEMPLO 1MAPA DE MEMORIA DEL EJEMPLO 1

p12p12&s1[3]&s1[3]6516265162

&s1[1]&s1[1] p11p116516065160

..................

..................

p22p226516665166

p21p216516465164

S2[79]S2[79]6515965159

..................

S2[0]S2[0]AA6508065080

S1[79]S1[79]6507965079

..................

S1[0]S1[0]HH6500065000

&s1[3]&s1[3] puvocpuvoc6517665176

BB65162651626517065170

6500065000 AA6516865168

..................

..................

p1vocp1voc&s1[1]&s1[1]6517465174

p1p1&s1[3]&s1[3]6517265172

p11 = f1(&s1[0], &p12);p11 = f1(&s1[0], &p12);

Page 29: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 2929

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN CMAPA DE MEMORIA DEL EJEMPLO 1MAPA DE MEMORIA DEL EJEMPLO 1

p12p12&s1[3]&s1[3]6516265162

&s1[1]&s1[1] p11p116516065160

..................

..................

p22p22&s2[3]&s2[3]6516665166

p21p21&s2[0]&s2[0]6516465164

S2[79]S2[79]6515965159

..................

S2[0]S2[0]AA6508065080

S1[79]S1[79]6507965079

..................

S1[0]S1[0]HH6500065000

&s2[3]&s2[3] puvocpuvoc6517665176

BB65166651666517065170

6508065080 AA6516865168

..................

..................

p1vocp1voc&s2[0]&s2[0]6517465174

p1p1&s2[3]&s2[3]6517265172

p21 = f1(&s2[0], &p22);p21 = f1(&s2[0], &p22);

Page 30: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 3030

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN CMAPA DE MEMORIA DEL EJEMPLO 1MAPA DE MEMORIA DEL EJEMPLO 1

p12p12&s1[3]&s1[3]6516265162

&s1[1]&s1[1] p11p116516065160

..................

..................

p22p22&s2[3]&s2[3]6516665166

p21p21&s2[0]&s2[0]6516465164

S2[79]S2[79]6515965159

..................

S2[0]S2[0]AA6508065080

S1[79]S1[79]6507965079

..................

S1[0]S1[0]HH6500065000

auxaux6517265172

BB&s2[0]&s2[0]6517065170

&s1[1]&s1[1] AA6516865168

..................

..................

f2(p11, p21);f2(p11, p21);

Page 31: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 3131

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN CMAPA DE MEMORIA DEL EJEMPLO 1MAPA DE MEMORIA DEL EJEMPLO 1

p12p12&s1[3]&s1[3]6516265162

&s1[1]&s1[1] p11p116516065160

..................

..................

p22p22&s2[3]&s2[3]6516665166

p21p21&s2[0]&s2[0]6516465164

S2[79]S2[79]6515965159

..................

S2[0]S2[0]AA6508065080

S1[79]S1[79]6507965079

..................

S1[0]S1[0]HH6500065000

auxaux6517265172

BB&s2[3]&s2[3]6517065170

&s1[3]&s1[3] AA6516865168

..................

..................

f2(p12, p22);f2(p12, p22);

Page 32: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 3232

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

EJEMPLO 2:EJEMPLO 2:

Escribir un programa en C que permitaEscribir un programa en C que permitaintercambiar entre si los valores máximos yintercambiar entre si los valores máximos ymínimos de dos tablas de enteros.mínimos de dos tablas de enteros.

Page 33: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 3333

PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C

RESULTADOS DEL EJEMPLO 2RESULTADOS DEL EJEMPLO 2

Page 34: PUNTEROS DOBLES EN C

XIII CUIEET SEP 05XIII CUIEET SEP 05 Sidonio Pérez: EUITI Eibar (UPV)Sidonio Pérez: EUITI Eibar (UPV) 3434

MUCHAS MUCHAS GRACIASGRACIAS

POR POR SUSU

ATENCIÓNATENCIÓN


Recommended