fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

empezar en c

143 Respuestas
16 Usuarios
0 Reactions
120.2 K Visitas
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

Hola, quisiera que me recomendarais algun programa, gratuito si es posible, para compilar y programar en c, y saber si se puede hacer programas en c, que ademas de escribir texto en pantalla pueda manejar graficos, crear entorno grafico propio y similares (como los entornos graficos de un videojuego) y como se puede programar que se muestren imagenes en pantalla con c. Igualmente agradeceria cualquier referencia a manuales lo mas completos posibles sobre programacion en c, preferiblemente en castellano.

Gracias por cualquier ayuda que me podais ofrecer.

Responder
142 respuestas
luisj
Respuestas: 235
(@luisj)
Estimable Member
Registrado: hace 18 años

Si tienes:

int i, *di;

&i ---> direccion de i
*di ---> lo que hay en la direccion di

Por lo que si metes en di la direccion de i:

di = &i;

Puedes asignar el valor a 'i' usando di, pero eso no cambia el valor de 'di':

*di = 10;

Por eso si tienes solo el puntero tienes que reservar memoria dinamica:

int *puntero;
puntero = (int *)malloc(1*sizeof(int));
*puntero = 10;

Si haces esto:

int *puntero;
*puntero = 10;

Estas escribiendo un 10 en una dirección desconocida, que lo mismo puede ser una dirección buena como puede ser la direccion de chiquito de la calzada. Por eso tienes que reservar memoria antes.

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

¡Ojo! que lo que yo estaba proponiendo era cambiar el edificio de dirección.

S2

Ranganok Schahzaman

Responder
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

Si tienes:

int i, *di;

&i ---> direccion de i
*di ---> lo que hay en la direccion di

Por lo que si metes en di la direccion de i:

di = &i;

Puedes asignar el valor a 'i' usando di, pero eso no cambia el valor de 'di':

*di = 10;

Por eso si tienes solo el puntero tienes que reservar memoria dinamica:

int *puntero;
puntero = (int *)malloc(1*sizeof(int));
*puntero = 10;

Si haces esto:

int *puntero;
*puntero = 10;

Estas escribiendo un 10 en una dirección desconocida, que lo mismo puede ser una dirección buena como puede ser la direccion de chiquito de la calzada. Por eso tienes que reservar memoria antes.

Eso cuando a uno le da igual la direccion que le asigne dinamicamente esta bien, pero ¿si uno quiere escribir en, por poner un ejemplo, la direccion del puerto paralelo o en la direccion de lo que uno quiera?

lo que yo decia no era:
int *puntero;
*puntero=10;
con eso se que asigno el valor en la direccion de memoria de puntero, lo que yo me referia era:
int *puntero;
puntero=(int *)10;
No se si sera lo mismo, pero creo que es diferente, si es lo mismo avisar.

Ranganok, entiendo que propusieras cambiar el edificio de direccion, pero cambiar un edificio a una direccion cualquiera tiene poca utilidad cuando se le quiere cambiar a una especificamente.

Como veo un tanto liado el tema con el ejemplo de (int *), ¿si uno quiere acceder, por ejemplo, a la direccion del puerto paralelo, como se aria solo con c, sin librerias, a base de punteros?

Responder
Página 29 / 29
Compartir: