[ Foro de C ]

Test de repaso del tema 9

22-Mar-2006 21:56
Nacho Cabanes (+30)
8 Respuestas

Buenas...

Como el tema 9 es difícil, ya teneis parte de los ejercicios tipo test de repaso en la Web.

Ayer había 5, hoy ya hay 10, y cada día iré poniendo otros 5 nuevos, hasta llegar a 30 el domingo (dos días antes del examen).

Las dudas, en clase o en el foro. ¡Duro con ello!  ;-)

N.


23-Mar-2006 14:36
Diego Teruel

Pues ahora que lo dices, yo tengo una duda sobre los punteros.

¿Por que en los primeros ejercicios usabamos el malloc para reservar espacio en memoria, y en estos ultimos ya no lo utilizamos?

¿Es que no es necesario ya reservar espacio en la memoria en estos ejercicios ultimos, o es que el anversand ese como se digaa, ya lo hace por si solo?

Un saludo

risa


23-Mar-2006 14:52
Nacho Cabanes (+30)

Es que en los últimos (pocos) ejercicios de clase no hemos reservado memoria dinámica:

- El visor de texto es una preparación al de hoy, que SÍ deberá usar malloc.

- Lo del teclado y el reloj, está claro que no lo necesita.

- Y lo de los parámetros por referencia está relacionado con los punteros, pero puede que no necesites reservar memoria, si la variable que pasas como parámetro la has declarado de forma estática.

Iremos alternando ejercicios en los que necesites reservar memoria dinámica con otros (los menos) que también usen punteros pero a veces no necesiten que reserves espacio (hoy verás un caso y mañana otro).

N.


25-Mar-2006 16:36
ines burbuja

en la pregunta 6 la respuesta d) la tendrias que dar como medio vàlida, no crees?


25-Mar-2006 18:16
Nacho Cabanes (+30)

El orden de las preguntas cambia, pero creo que sé a cual te refieres. Y la respuesta es que no: si hay dos respuestas parcialmente correctas y no hay ninguna que sea totalmente correcta, entonces responder sólo una de ellas sería tener media pregunta bien contestada, pero no es el caso.

Si entre las respuestas está la "totalmente correcta", está claro que las "medio correctas" son para ver quien "medio conoce como se hace", que es algo que normalmente se puntúa en un ejercicio de desarrollo, pero no en uno tipo test, en el que si hay una respuesta totalmente correcta y varias que no son totalmente correctas, la única que puntúa es la totalmente correcta.

Y más en un ejercicio de repaso que no es el examen de verdad ;-)

N.


25-Mar-2006 21:05
Taisen Tetsu

lo que no me ha quedado muy claro a mi es que en una pregunta pone que la posicion de un puntero puede decirse con *(datos+1) o con datos[1]

pero si no me acuerdo mal en clase dijiste que era *datos[1]. como es al final?

26-Mar-2006 01:07
Javier Hernndez

era *(datos+1) segun se dijo en clase y si mi memoria no me falla. A menos que Nacho nos este engañando ;-)


26-Mar-2006 13:21
Taisen Tetsu

esa es una manera pero esa ya esta clara que es asi :P me refiero a la otra manera la de los corchetes


26-Mar-2006 18:35
Nacho Cabanes (+30)

Ok, repasito:

Forma estática de reservar memoria:  int n[30];
Se accede al primer dato con  n[0]  y al quinto con n[4]
Se accede a la primera posición de memoria (por ejemplo, para leer mediante scanf los valores que teclee el usuario) con &n[0] y a la quinta con &n[4];

Forma dinámica: se declara con int *n;
Se reserva espacio para x datos con   n = (int *) malloc (x * sizeof(int));
Se accede al primer dato con  *n  y al quinto con   *(n+4)
Se accede a la primera posición de memoria (por ejemplo, para leer mediante scanf) con n y a la quinta con n+4;


Aun así, el lenguaje C permite acceder con corchetes a algo que se ha reservado de forma dinámica (más legible, aunque algún purista podría decir que conceptualmente no es lo más correcto), o acceder con *(n+x) a algo que se ha reservado de forma estática (generalmente no merecerá la pena, porque es más difícil de leer).

¿Más dudas?

N.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)