tengo el siguiente código:Cómo usar "puntero a la matriz 10 de int"?
#include<stdio.h>
int main()
{
int(* a)[10]; //declare a as pointer to array 10 of int
int b[10]; // taken a array of 10 int
b[2]=32;
a=&b;
printf("b is on %p\n",&b);
printf("a is on %p\n",a);
printf("magic is %d\n",a[2]); // why this is not showing 32
return 0;
}
de salida:
b is on 0xbfa966d4
a is on 0xbfa966d4
magic is -1079417052
Aquí he tomado a
como puntero a la matriz 10 de int que apunta a la matriz b
, por lo que ahora qué ¿No puedo obtener el valor de 32 en a[2]
?
a[2]
se evalúa como *(a+2)
por lo que ahora el tiene la dirección de la matriz de modo b
*(b+2)
*(a+2)
y son similares así que ¿por qué no recibo valor de 32 aquí?
Editar: me dieron respuesta mediante el uso de
(*a)[2]
pero no estoy recibiendo cómo funciona ... ver cuando
a[2]
es *(a+2)
y a+2
es una más 2 * sizeof(int[10])
bytes.
de esta manera (*a)[2]
cómo expandir?
(* a) [2] sería lo mismo que [0] [2] – novice