Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
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.
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.
¡Ojo! que lo que yo estaba proponiendo era cambiar el edificio de dirección.
S2
Ranganok Schahzaman
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?