Test Foro de elhacker.net SMF 2.1

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 (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;
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:

#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!
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,