punteros dobles en c - uv.es · punteros dobles en c funciones de usuario y punteros cuando una...
TRANSCRIPT
PUNTEROS DOBLES EN CPUNTEROS DOBLES EN C
XIII CUIEET – MASPALOMASXIII CUIEET – MASPALOMAS
Sidonio Pérez MatillaSidonio Pérez MatillaEUITI de EibarEUITI de Eibar
UPVUPV
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.
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
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;
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;
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
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.
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.
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.
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
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
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);
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);
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
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
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);
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()
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;
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
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++){{
;;}}
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;}}
}}
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}}
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
}}
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;
}}
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
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
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
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);
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);
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);
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);
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.
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
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