| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
xtremecopy
Registrado: 05 Oct 2007 Mensajes: 28
| Publicado: 20/11/2007 1:32 am | | | Título: Variable puntero |
| | Código: | #include <stdio.h> #include <stdlib.h> main() {int d,e,f,g; char *a[]={"Lunes","Martes","Miercoles","Jueves","Viernes"}; d=*(*a+1); e=*a[0]; f=**(a+2); g=++a[2][3]; printf("%c %c %c %c",d,e,f,g); getchar(); system("PAUSE"); return EXIT_SUCCESS; } |
Que valores toman las variables d,e,f,g ? eso son punteros , no? |
| | Volver arriba | |  | mamntc02
Registrado: 30 Abr 2007 Mensajes: 293
| Publicado: 20/11/2007 2:50 am | | | Título: |
| Hola,
Bueno, no hay nada más simple q ejecutarlo para comprobar qué da, no? De todas formas, ni d, e, f ó g son punteros. Más q nada pq estan decladados como enteros, y no como punteros. Por ejemplo:
- d = * (*a +1)
*a apunta a la 'L' de lunes, al sumarle 1, apunta a la 'u', y al hacer *(*a + 1) recuperamos el valor 'u' en d ==> d = 'u'
- g = ++a[2][3]
Primero tomamos a[2] q apunta a la 'M' de Miercoles. a[2][3] es el carácter 'r' de Miércoles. Al hacer ++a[2][3] mediante el operador de pre-incremento, augmenta el valor de a[2][3] a 's'. Por tanto en lugar de miércoles tendremos Miescoles, y luego asignamos este valor a g ==> g = 's'
- ... y así los demás
Saludos.... espero no haberme equivocado, q no lo he ejecutado  |
| | Volver arriba | |  | mamntc02
Registrado: 30 Abr 2007 Mensajes: 293
| Publicado: 20/11/2007 3:01 am | | | Título: |
| Al final lo he ejecutado y me he equivocado 
La operación q calcula g da un error de ejecución. La razón es usar el operador incremento(++) a valores constantes. Y los valores q estan en a son constantes por ser literales, por lo q no se pueden cambiar. Funcionaría y también daría 's', si: Ya q esto no modificaría el valor de *a[].
Saludos. |
| | Volver arriba | |  | | xtremecopy
Registrado: 05 Oct 2007 Mensajes: 28
| Publicado: 20/11/2007 10:04 am | | | Título: |
| Muchas gracias , claro lo que sucede es que lo compilaba y no me daba ningun resultado ..
quedaba la pantalla en negra
ahora con la modificacion de "g"
si ..
me da lo siguiente..
u L M s
entonces , los valores serian :
d=u e=L f=M g=s
estoy en lo correcto?
saludossss y MUCHISIMAS GRACIAS |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |