Lenguaje C:apuntador a arreglo de enteros y arreglo de apuntadores a enteros.

Iniciado por NOB2014, 26 Noviembre 2015, 21:25 PM

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

NOB2014

Hola a todos y que tengan un muy buen día.

int (*a)[35]; //declara un apuntador a un arreglo de 35 enteros.

int *a[35]; //declara un arreglo de 35 apuntadores a enteros.


Estudiando apuntadores en c me encontré con estas 2 declaraciones pero no las entiendo, alguien seria tan amable de poner algunas líneas de código para comenzar a entender algo del tema?.-
Es todo, intenté hacer un poco de práctica pero no logro hacer que el programa corra y no tengo nada para mostrar.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

geeke

1. int *a[35] - significa que a es un array de punteros es decir cada miembro del array a es un puntero de tipo entero, cada miembro del array puede contener la dirección de un entero.

Código (cpp) [Seleccionar]
#include<stdio.h>

int main()
{
   int b = 3;
   int c = 4;
   int *a[2] = {&b, &c};
   printf("a[0] = %d, a[1] = %d\n", *a[0], *a[1]);
   return 0;
}


2. int (*a)[35] - aquí a es un puntero a un array de 35 enteros, es decir a apunta a un array que contiene treita y cinco enteros.

Código (cpp) [Seleccionar]
#include<stdio.h>

int main(void)
{
   int a[5] = { 0, 1, 2, 3, 4 }, i;
   int (*p)[5];
   p = &a;
   for (i = 0; i < 5; ++i)
       printf("%d ", (*p)[i]);
   return 0;
}



NOB2014

Hola Coper.
Muchas gracias por ocuparte, que bien explicado, me queda todo claro y espero contar con tu ayuda toda vez que exponga mis dudas, hago este pedido porque los grandes genios históricos que ayudaban en este foro parecen que han desaparecido todos.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-