Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Gunhack en 1 Octubre 2016, 02:33 am



Título: Igualar punteros ***, ** y *
Publicado por: Gunhack en 1 Octubre 2016, 02:33 am
Hola compañeros, tengo una gran duda sobre los punteros... ¿Es posible almacenar la direccion de memoria de un puntero * en un puntero *** o uno ** a *** y que estos sean arreglos? De ser posible, ¿Cómo accedo a sus valores?  :P

Así...

Código
  1.    int* p1; // lo inicializamos con el operador new...
  2.    int** p2; // lo inicializamos con operador new y sus respectivos ciclos...
  3.    int*** p3;
  4.    p3 = p1;
  5.    p3 = p2;


Título: Re: Igualar punteros ***, ** y *
Publicado por: xiruko en 1 Octubre 2016, 06:30 am
Hola,

Mira aquí tienes un ejemplo de usos de punteros:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int a = 5, b = 10, c = 20, d = 40;
  6.  
  7. int *p1;        // Puntero a entero
  8. int *p2[2]; // Array de punteros a enteros
  9. int *p3[2][2];  // Array de array de punteros a enteros
  10.  
  11. p1 = &a;
  12. printf("*p1 = %d\n", *p1);  // imprime 5
  13.  
  14. p2[0] = &a; p2[1] = &b;
  15. printf("*p2[0] = %d, *p2[1] = %d\n", *p2[0], *p2[1]); // imprime 5, 10
  16. printf("**p2 = %d, *(*p2+1) = %d\n", **p2, *(*p2+1)); // imprime 5, 10
  17.  
  18. p3[0][0] = &c; p3[1][1] = &d;
  19. printf("*p3[0][0] = %d, *p3[0][1] = %d\n", *p3[0][0], *p3[1][1]);  // imprime 20, 40
  20. printf("***p3 = %d, **(*(p3+1)+1) = %d\n", ***p3, **(*(p3+1)+1));  // imprime 20, 40
  21.  
  22. return 0;
  23. }

En el caso de que fuera usando memoria dinámica, es lo mismo solo que tendrías que reservar la memoria antes, claro.

Saludos!


Título: Re: Igualar punteros ***, ** y *
Publicado por: dato000 en 1 Octubre 2016, 23:32 pm
que buen ejemplo, bastante claro, aunque me deja pensando como trabajaria para archivos,