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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Punteros concatenados. Como guardar una direccion de memoria?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Punteros concatenados. Como guardar una direccion de memoria?  (Leído 5,127 veces)
AXA

Desconectado Desconectado

Mensajes: 18



Ver Perfil WWW
Punteros concatenados. Como guardar una direccion de memoria?
« en: 21 Octubre 2021, 17:18 pm »

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();
}



En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros concatenados. Como guardar una direccion de memoria?
« Respuesta #1 en: 21 Octubre 2021, 17:51 pm »

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:
Código
  1. #include <cstdio>
  2.  
  3. void error(int *l)
  4. {
  5. l = new int;
  6. }
  7.  
  8. void reserva(int **l)
  9. {
  10.  *l = new int;
  11. }
  12.  
  13. void main ()
  14. {
  15. int *m1 = nullptr;
  16. int *m2 = nullptr;
  17. error(m1);
  18. reserva(&m2);
  19. printf("%p %p\r\n", m1, m2);
  20. }


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


« Última modificación: 21 Octubre 2021, 18:00 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
AXA

Desconectado Desconectado

Mensajes: 18



Ver Perfil WWW
Re: Punteros concatenados. Como guardar una direccion de memoria?
« Respuesta #2 en: 22 Octubre 2021, 02:48 am »

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++?
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros concatenados. Como guardar una direccion de memoria?
« Respuesta #3 en: 22 Octubre 2021, 08:36 am »

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.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
AXA

Desconectado Desconectado

Mensajes: 18



Ver Perfil WWW
Ayuda
« Respuesta #4 en: 23 Octubre 2021, 01:16 am »

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. ;-)
     
 
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Punteros concatenados. Como guardar una direccion de memoria?
« Respuesta #5 en: 23 Octubre 2021, 08:06 am »

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.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines