Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: Pino1952 en Noviembre 26, 2015, 09:28:16 pm

Título: Apuntador a arreglo de enteros y arreglo de apuntadores a enteros en lenguaje c.
Publicado por: Pino1952 en Noviembre 26, 2015, 09:28:16 pm
Hola a todos y que tengan un muy buen día.

Código: [Seleccionar]
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
Título: Re:Apuntador a arreglo de enteros y arreglo de apuntadores a enteros en lenguaje c.
Publicado por: Calantra en Noviembre 26, 2015, 10:21:22 pm
Enas , mira esto a ver si lo entiendes :
Código: [Seleccionar]
    int array[35];      // un arreglo de 35 enteros
    int (*a)[35]=&array;//puntero al inicio de arreglo
    int *b[10];         // un arreglo de 10 punteros
    (*a)[0]=12345;      // asignamos un valor al puntero que apunta a la posicion 0 del arreglo
    b[0]=a[0];          // metemos el puntero en el array de punteros
    printf ("direccion de la posicion 0 del arreglo:0x0%x valor :%i\n",&array[0],array[0]);
    printf ("direccion:0x0%x valor:%i\n",b[0],*b[0]); // vemos como trabajo la asignacion

He intentado explicarlo lo mejor que he podido.
Un saludo.
Título: Re:Apuntador a arreglo de enteros y arreglo de apuntadores a enteros en lenguaje c.
Publicado por: stakewinner00 en Noviembre 26, 2015, 10:42:59 pm
Visto desde el punto de vista del tipo creo que resulta más claro.
Para definir un array X de tipo T de N elementos hacemos en general algo como.
Código: [Seleccionar]
T X[N]si T = int*, N = 35y X = a
temeos un array "a" de tipo int* de 35 elementos
Código: [Seleccionar]
int* a[35]
//que también se puede escribir como
int *a[35]
si tenemos T = int, N = 35, X = *a
tenemos un array "*a" de tipo int de 35 elementos, como X = *a es un apuntador al array de 35 elementos
Código: [Seleccionar]
int (*a)[35]
Título: Re:Apuntador a arreglo de enteros y arreglo de apuntadores a enteros en lenguaje c.
Publicado por: Pino1952 en Noviembre 27, 2015, 01:12:15 pm
Hola.
Muchas gracias a ambos por ocuparse, muy pero muy buenas las 2 explicaciones, ya no me quedan dudas de que se trata.-

Saludos y un abrazo.-.
Daniel