Pasando un puntero a matriz dinámica

¿Es una forma correcta de pasar un puntero a una matriz dinámica? ¿Va a funcionar? Si no, explique por qué, si es así, explique por qué también. Gracias.

struct record { char * community_name; double data[10]; double crimes_per_pop; }; void allocate_struct_array(struct record *** r); int main() { /* allocating pointer to an array of pointers */ struct record ** r; /* passing its address to a function */ allocate_struct_array( &(**r) ); } /* function gets an address */ void allocate_struct_array(struct record *** r) { ... } 

Lo que estaba tratando de hacer es asignar una serie de punteros, donde cada puntero apunta al registro de la estructura. Se supone que la función asigna esta matriz utilizando solo el puntero a r, que se declaró en main. Estaba jugando con este código, pero no puede hacerlo funcionar.

En la interfaz de la función, solo necesita un struct record **r doble puntero struct record **r y no un triple.

Una matriz se puede representar mediante una struct record *array ; así que un puntero a ese es struct record **ptr_to_array .

Llamas a la función con &array .

 struct record { char * community_name; double data[10]; double crimes_per_pop; }; void allocate_struct_array(struct record **r); int main() { struct record *r; allocate_struct_array(&r); } void allocate_struct_array(struct record **r) { *r = malloc(23 * sizeof(struct record)); ... } 

No sé qué intenta hacer, pero al menos tiene un error programático.

 allocate_struct_array( &(**r) ); 

necesita ser –

 allocate_struct_array(&r);