2011-09-08 19 views

risposta

10

arr è un'espressione che valuta un int* (questa è la famosa funzione "decodifica array da puntatore" ure).

&arr è un'espressione che restituisce un valore int (*)[3].

I nomi di array "decadono" ai puntatori del primo elemento dell'array in tutte le espressioni tranne quando sono operandi per gli operatori sizeof o &. Per queste due operazioni, i nomi degli array mantengono il loro 'arrayness' (C99 6.3.2.1/3 "Lvalues, array e designatori di funzioni").

+1

+1: Vorrei anche sottolineare che, anche se di tipo diverso, entrambe le espressioni restituiscono lo stesso indirizzo di puntatore. –

0

Non funziona esattamente per la stessa ragione:

int i; 
int* pi = i; // error: no conversion from int to int* 
Problemi correlati