No encuentro forma de guardar una dir de memoria. yo intente.
Y obviamente no guarda las direcciones.
Como hago para guardar una direccion y leerla?.
class clist { public: clist *pred,*post }
clist *pr,*po;
void new(clist *l)
{
clist l1,l2;
l1=malloc(sizeof(l1));
l2=malloc(sizeof(l2));
clist ll;
ll.pred=NULL;
ll.post=l2;
*l1=ll;
ll.pred=l1;
ll.post=NULL;
*l2=ll;
l=l1;
pr=l1;
po=l2;
}
main ()
{
clist *l;
new(l);
clist ll;
ll=*l;
if (l.post==po) printf("todo bien");
else printf("todo mal");
getch();
}
Tenes que pasar el puntero como referencia o doble puntero. Mejor explicado aca:
http://conclase.net/c/curso/cap15
Ejemplo de como lo estas haciendo y como podria funcionar, en error l es una variable local pasada por valor:
#include <cstdio>
void error(int *l)
{
l = new int;
}
void reserva(int **l)
{
*l = new int;
}
void main ()
{
int *m1 = nullptr;
int *m2 = nullptr;
error(m1);
reserva(&m2);
printf("%p %p\r\n", m1, m2);
}
Por cierto tu codigo no compila ni a palos, no podes llamar new a una funcion en C++ al ser una palabra clave (y no podes usar class en C ...).
Muchas gracias IDOL. Queria preguntarte que C++ usas. Yo instale dos que encontre gratis para windows. Uno es el free c++ y el otro es el 5.2 de borland. Pero no tiene graphics.h . Hay otra forma de iniciar la alta resolucion? u otro c++?
Visual C++: https://docs.microsoft.com/en-us/cpp/?view=msvc-160
Podes usar DirectX, OpenGL o Vulkan por ejemplo pero mejor concentrate en aprender los fundamentos basicos del lenguaje y ya con el tiempo decidiras que API usar.
No consigo entender como funciona. Si me mandas resuelto lo que quiero hacer te lo agradeceria mucho. Yo nocesito enlazar...
class clist { public:
clist pred,post;
char data[20];
}
yo programaba en pascal y es muy facil. pero aca no tengo idea.
basicxamente deberia ser
clist l;
l=l.post; y salta al siguiente. Como hago aca?. el int ** no lo supe usar bien te mando lo que intente hacer. Ademas vi que solo es un desplazamiento. no conserva segmento y desplazamiento. yo nocesito mucha memoria. Hice un lisp en pascal, el lenguaje de inteligencia artificial, estoy aprendiendo a usarlo con un agedres y vi que el c en windows es rapidicimo. En pascal un contador en un segundo llega a 20 millones y aca a 5 billines que pareciera ser mas rapido de lo que dan los hrzs.Mejor. Pero estoy atado a hacer una cadena de punteros para seguir. el resto ya se lo suficiente.
Entendes lo que necesito?
Yo tengo que hacer un nuevo clist , cargar el data y leerlo. enlazar en pred el clist anterior y
en el anterior el nuevo.
Yo pensaba usar lo que me distes pero no funciona como pareceria.
en pasacal vos tenes variables pointer y punteros. todos son seg y ofs.
type
clist = object
pred,post:pointer;
data:string[20];
end;
var
l,ln:=*clist;
begin
new(l);
l.data="uno";
l.pred=nil;
new(ln);
ln.data="dos";
ln.pred=l;
ln.post=nil;
while *l.post<>nil do begin
write(*l.data);
l=*l.post;
end;
end.
Esto es lo que necesito en c. Si me lo das siguo sin problemas.
En pascal no es *, es el triangulo hacia arriba que no lo encuento. Pero basicamente
l es un pointer (segmento,desplazamiento). *l es el contenido o se asigna al contenido.
Te pido encarecidamente que me des un ejemplo resuelto porque no lo voy a sacar sola.
Y el objetivo es la inteligencia artificial que me gusta usar la que hago yo.
Un beso. ;-)
No se hacen tareas, lo que yo te mande logra cambiar la direccion a la que apunta el puntero declarado en main desde otra funcion y punto.