ho scritto una funzione che prende un puntatore ad un array di inizializzare i suoi valori:Puntatore alla matrice come parametro di funzione
#define FIXED_SIZE 256
int Foo(int *pArray[FIXED_SIZE])
{
/*...*/
}
//Call:
int array[FIXED_SIZE];
Foo(&array);
E non può essere compilato:
errore C2664: 'Foo': non può convertire il parametro 1 da 'int (* __ W64) [256]' a 'int * []'
Tuttavia, ho violato questo insieme:
typedef int FixedArray[FIXED_SIZE];
int Foo(FixedArray *pArray)
{
/*...*/
}
//Call:
FixedArray array;
Foo(&array);
E funziona. Cosa mi manca nella prima definizione? Ho pensato che la due sarebbe equivalente ...
Sì, puntatore al primo elemento e alla dimensione (se necessario, che probabilmente è). –
Mi hai battuto per questo! – Mosby