2011-09-08 13 views

Odpowiedz

10

arr jest wyrażeniem, które ocenia się na int* (jest to słynny wyczyn "tablic zaniku do wskaźnika"; ure).

&arr to wyrażenie, które ocenia się na int (*)[3].

Array nazwy "rozpadu" do wskaźników do pierwszego elementu tablicy we wszystkich wyrażeniach, z wyjątkiem sytuacji, gdy są operandy do operatorów sizeof lub &. W przypadku tych dwóch operacji nazwy tablic zachowują swoją "aratraturę" (C99 6.3.2.1/3 "L wartości, tablice i oznaczenia funkcji").

+1

+1: Chciałbym również podkreślić, że choć innego rodzaju, oba wyrażenia zwracają ten sam wskaźnik adresu. –

0

To nie działa dokładnie z tego samego powodu jak:

int i; 
int* pi = i; // error: no conversion from int to int* 
Powiązane problemy