elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Declaraciones en C, Ayuda, Por favor.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Declaraciones en C, Ayuda, Por favor.  (Leído 3,487 veces)
aisak77

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Declaraciones en C, Ayuda, Por favor.
« en: 29 Enero 2017, 12:06 pm »

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

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #1 en: 29 Enero 2017, 13:11 pm »

Supongo que podrás responder a la mayoría. Hazlo, y dí qué parte del resto no sabes responder.

En cualquier caso, si no controlas aun los punteros, mira algún tutorial, comko: http://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol1/ch03s04s04.html


En línea

aisak77

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #2 en: 29 Enero 2017, 13:41 pm »

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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #3 en: 29 Enero 2017, 13:59 pm »

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:
Código
  1. 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 Desconectado

Mensajes: 6


Ver Perfil
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #4 en: 29 Enero 2017, 14:28 pm »

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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #5 en: 29 Enero 2017, 15:08 pm »

Bien, solo 2 detalles:

Citar
iv. *dx es de tipo: Entero ( ¿valor de x? )


Citar
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).

Citar
i. V + 3: v[3]
Citar
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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #6 en: 29 Enero 2017, 15:19 pm »

Tiene razón, **dx es una errata, seguramente el ejercicio quería decir **ddx.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #7 en: 29 Enero 2017, 15:33 pm »

Ops, mal-leí **ddx.
En línea

aisak77

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Declaraciones en C, Ayuda, Por favor.
« Respuesta #8 en: 29 Enero 2017, 15:34 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Declaraciones de WinInet
Programación Visual Basic
Slasher-K 2 4,886 Último mensaje 3 Septiembre 2005, 21:25 pm
por NYlOn
Declaraciones api's Windows « 1 2 3 »
Programación Visual Basic
programatrix 26 18,234 Último mensaje 23 Septiembre 2005, 00:34 am
por Slasher-K
Ayuda. cifrar declaraciones del api de windows.
.NET (C#, VB.NET, ASP)
70N1 0 2,022 Último mensaje 2 Febrero 2012, 12:15 pm
por 70N1
[Resuelto] Problemas con las declaraciones
Programación C/C++
yawin 2 1,865 Último mensaje 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,400 Último mensaje 2 Febrero 2016, 23:05 pm
por IBE
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines