Igualar punteros ***, ** y *

Iniciado por Gunhack, 1 Octubre 2016, 02:33 AM

0 Miembros y 1 Visitante están viendo este tema.

Gunhack

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 (cpp) [Seleccionar]
    int* p1; // lo inicializamos con el operador new...
    int** p2; // lo inicializamos con operador new y sus respectivos ciclos...
    int*** p3;
    p3 = p1;
    p3 = p2;

xiruko

Hola,

Mira aquí tienes un ejemplo de usos de punteros:

#include <stdio.h>

int main()
{
int a = 5, b = 10, c = 20, d = 40;

int *p1;        // Puntero a entero
int *p2[2]; // Array de punteros a enteros
int *p3[2][2];  // Array de array de punteros a enteros

p1 = &a;
printf("*p1 = %d\n", *p1);  // imprime 5

p2[0] = &a; p2[1] = &b;
printf("*p2[0] = %d, *p2[1] = %d\n", *p2[0], *p2[1]); // imprime 5, 10
printf("**p2 = %d, *(*p2+1) = %d\n", **p2, *(*p2+1)); // imprime 5, 10

p3[0][0] = &c; p3[1][1] = &d;
printf("*p3[0][0] = %d, *p3[0][1] = %d\n", *p3[0][0], *p3[1][1]);  // imprime 20, 40
printf("***p3 = %d, **(*(p3+1)+1) = %d\n", ***p3, **(*(p3+1)+1));  // imprime 20, 40

return 0;
}


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

Saludos!

dato000

que buen ejemplo, bastante claro, aunque me deja pensando como trabajaria para archivos,