Autor
|
Tema: Declaraciones en C, Ayuda, Por favor. (Leído 3,420 veces)
|
aisak77
Desconectado
Mensajes: 6
|
Según las declaraciones int *dx = &x, **ddx = &dx; i. x es de tipo: ii. dx es de tipo: iii. ddx es de tipo: iv. *dx es de tipo: v. *ddx es de tipo: vi. **dx es de tipo:
Dadas las siguientes declaraciones int V[4] = 1, 3, 4, 5, *p; Qué valor contiene: i. V + 3: ii. p después de la asignación p = &v[0]: iii. *(p+3): iv. p después de la asignación p = v: v. p+3:
|
|
|
En línea
|
|
|
|
|
aisak77
Desconectado
Mensajes: 6
|
Según las declaraciones int *dx = &x, **ddx = &dx; i. x es de tipo: Entero ii. dx es de tipo: Entero iii. ddx es de tipo: Entero iv. *dx es de tipo: Puntero a Entero v. *ddx es de tipo: Puntero de Entero vi. **dx es de tipo: Puntero a Puntero a Entero
Dadas las siguientes declaraciones int V[4] = 1, 3, 4, 5, *p; Qué valor contiene: i. V + 3: 5 ii. p después de la asignación p = &v[0]: 1 iii. *(p+3): 5 iv. p después de la asignación p = v: 1 v. p+3: 5
Aquí expongo las posibles respuestas, os agradezco que me corrigieseis, gracias.
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Según las declaraciones int *dx = &x, **ddx = &dx; i. x es de tipo: Entero ii. dx es de tipo: Entero iii. ddx es de tipo: Entero iv. *dx es de tipo: Puntero a Entero v. *ddx es de tipo: Puntero de Entero vi. **dx es de tipo: Puntero a Puntero a Entero
Dadas las siguientes declaraciones int v[4] = 1, 3, 4, 5, *p; Qué valor contiene: i. V + 3: 5 ii. p después de la asignación p = &v[0]: 1 iii. *(p+3): 5 iv. p después de la asignación p = v: 1 v. p+3: 5
Aquí expongo las posibles respuestas, os agradezco que me corrigieseis, gracias.
Ahora, primera parte: Para saber el tipo de una variable, normalmente te servirá con ver su declaración. Por ejemplo: int *dx = &x;
No es int, es int*. Es un putnero a int, una dirección que apunta a un entero. Por esa razón se le asigna un valor con &x. x es un entero, así que &x es la dirección de un entero (int*). Fuera de la declaración, cuando haces "*dx" no estás diciendo que es un putnero. Al revés, estamos accediendo al valor que apunta. *( int*) -> int. Así, por ejemplo, *dx sería un entero (con el valor de x). Al poner * antes d euna variable ( salvo en la declaración), digamos que "bajas" un nivel. Al poner &, "subes" un nivel. &x -> int*. El resto te las dejo revisar :p Y la segunda parte: El valor de V+3 no es 5. El valor de *(V+3) SÍ es 5. Pero si no pone el *, entonces es una dirección. Es la dirección de ese 5, pero no es ese 5. *(p+3) sí que es ese 5, por ejemplo, proque tiene el *. p = &v[0], lo mismo. No es 1, es la dirección de 1 (es decir, es igual a V): p = v es lo mismo que p = &v[0] (Poner [_] también "baja" un nivel, ya que, al fin y al cabo, es como poner un *) *(p+3) == p[3]Bueno, no ibas desencaminado. Solo tener cuidado con diferenciar la dirección de X con X. Y recordar que el significado de * y & en una declaración no es el mismo que fuera de ella.
|
|
|
En línea
|
|
|
|
aisak77
Desconectado
Mensajes: 6
|
Según las declaraciones int *dx = &x, **ddx = &dx; i. x es de tipo: Entero ii. dx es de tipo: Puntero iii. ddx es de tipo: Puntero a Puntero iv. *dx es de tipo: Entero ( ¿valor de x? v. *ddx es de tipo: Puntero vi. **dx es de tipo: Este ya no estoy seguro.., no sé, si es una errata del ejercicio
Dadas las siguientes declaraciones int V[4] = 1, 3, 4, 5, *p; Qué valor contiene: i. V + 3: v[3] ii. p después de la asignación p = &v[0]: Dirección de memoria del primer elemento del vector. "v" iii. *(p+3): 5 iv. p después de la asignación p = v: DIreccion de memoria del primer elemento del vector. "v" v. p+3: v[3]
Muchas graccias por tu ayuda ivan, tengo un examen el miercoles, y quiero que estos conceptos me queden bien claros, aunque aún hay algunos que no los consigo comprender bien, aquí te dejo las respuestas según he entendido lo que me has explicado, gracias de nuevo.
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Bien, solo 2 detalles: iv. *dx es de tipo: Entero ( ¿valor de x? ) Sí vi. **dx es de tipo: Este ya no estoy seguro.., no sé, si es una errata del ejercicio No es error. **dx es el valor de x. dx apunta a x. ddx apunta a dx. Por tanto, al poner *ddx, estás dirigiendote a la variable dx. Al poner otro *, estás dirigiendote a lo que apunta la variable dx. **ddx es lo mismo que poner *(*ddx). *ddx es dx, así que eso "se convierte" en *(dx). i. V + 3: v[3] v. p+3: v[3] dirección del cuarto elemento del vector, no v[3]. v[3] no es la dirección del cuarto elemento, ES el cuarto elemento. Lo mismo para la otra.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Tiene razón, **dx es una errata, seguramente el ejercicio quería decir **ddx.
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Ops, mal-leí **ddx.
|
|
|
En línea
|
|
|
|
aisak77
Desconectado
Mensajes: 6
|
Resumiendo, quedaría tal que así:
Según las declaraciones int *dx = &x, **ddx = &dx; i. x es de tipo:Entero ii. dx es de tipo:Puntero iii. ddx es de tipo:Puntero a Puntero iv. *dx es de tipo:Entero v. *ddx es de tipo:Puntero vi. **dx es de tipo:Entero
Dadas las siguientes declaraciones int V[4] = 1, 3, 4, 5, *p; Qué valor contiene: i. V + 3:Dirección de memoria del cuarto elemento del vector. ii. p después de la asignación p = &v[0]:Dirección de memoria de la primera posición del vector iii. *(p+3):5 iv. p después de la asignación p = v:Dirección de memoria de la primera posición del vector v. p+3:Dirección de memoria del cuarto elemento del vector.
Muchas gracias, Un saludo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Declaraciones de WinInet
Programación Visual Basic
|
Slasher-K
|
2
|
4,858
|
3 Septiembre 2005, 21:25 pm
por NYlOn
|
|
|
Declaraciones api's Windows
« 1 2 3 »
Programación Visual Basic
|
programatrix
|
26
|
18,115
|
23 Septiembre 2005, 00:34 am
por Slasher-K
|
|
|
Ayuda. cifrar declaraciones del api de windows.
.NET (C#, VB.NET, ASP)
|
70N1
|
0
|
2,001
|
2 Febrero 2012, 12:15 pm
por 70N1
|
|
|
[Resuelto] Problemas con las declaraciones
Programación C/C++
|
yawin
|
2
|
1,824
|
24 Octubre 2015, 15:40 pm
por yawin
|
|
|
creo que dañe mi router por favor ayuda no c que hacer por favor ayuda
Redes
|
ddiego84
|
2
|
3,300
|
2 Febrero 2016, 23:05 pm
por IBE
|
|