Quando si crea una matrice di puntatori in c cosa fa l'effetto dell'aggiunta di parentesi?C pointer array
Ad esempio
int (*poi)[2];
vs
int *poi[2];
Quando si crea una matrice di puntatori in c cosa fa l'effetto dell'aggiunta di parentesi?C pointer array
Ad esempio
int (*poi)[2];
vs
int *poi[2];
puntatore a una matrice di 2 int
s:
int (*poi)[2];
Un array di due int
puntatori:
int *poi[2];
Normalmente Array ha precedenza maggiore rispetto al puntatore, ma se si aggiungono le parentesi poi il puntatore viene "prima".
Le parentesi si legano più stretto di *, quindi il primo è un array di puntatori int, mentre il secondo è un puntatore a un array di int.
Hai di nuovo quello che hai davanti, vero? –
In un altro modo, penso. –
L'operatore di indice []
si lega più forte dell'operatore di derealizzazione *
.
int *poi[2]
si traduce in:
Se vedete poi, si applicano [x]
ad esso, quindi dereference il risultato tramite *
e si ottiene un int
. Quindi è un array di 2 puntatori a int.
In
int (*poi)[2]
i parantheses forzare il *
da applicare prima. Quindi in qualsiasi momento viene utilizzato, se si applica *
prima e quindi [x]
si ottiene int
. Quindi è un puntatore a un array di 2 int
.
Consente di risparmiare usura sulla tastiera –