Sto scrivendo una libreria C ++ (ma preferisco le funzioni dell'interfaccia in stile C) e una delle funzioni restituisce array di float. Non sono sicuro di dover passare il puntatore o l'array fisso per ottenere questi dati?
// in the library header file
#define MAX_ITEMS_SIZE 1000
int getData(float * data, int &size );
o
int getData(float (&data)[MAX_ITEMS_SIZE], int & size )
Se sto passando il puntatore, il client dovrebbe allocare MAX_ITEMS_SIZE per questo. È un'aspettativa ragionevole ed equa? Passarlo come array forza il client a passare la memoria massima richiesta. Qual è il migliore?
Qualche altro background, MAX_ITEMS_SIZE è il numero massimo di oggetti che possono essere restituiti. In realtà, l'array conterrà meno elementi che vengono riempiti nel parametro size. La funzione restituisce int che è un codice di errore dove zero significa nessun errore.
Il mio obiettivo generale è come restituire i dati che sono array di float in modo facile e comprensibile. Anche se sto usando il C ++, vorrei attenermi alle funzioni dell'interfaccia C in modo che la libreria possa essere usata più ampiamente.