avere il codice seguente:Come usare "pointer to array 10 of 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;
}
uscita:
b is on 0xbfa966d4
a is on 0xbfa966d4
magic is -1079417052
Qui ho preso a
come puntatore a matrice 10 di int che punta alla matrice b
, così ora perché non riesco a ottenere il valore di 32 su a[2]
?
a[2]
viene valutato come *(a+2)
così ora un ha l'indirizzo di matrice b
così *(b+2)
e *(a+2)
sono simili e allora perché non ricevo valore a 32 qui?
Edit: ho ottenuto risposta utilizzando
(*a)[2]
ma io non ricevo come funziona ... vedere quando
a[2]
è *(a+2)
e a+2
è un più 2 * sizeof(int[10])
byte.
in questo modo (*a)[2]
come espandere?
(* a) [2] sarebbe lo stesso di [0] [2] – novice