Recentemente ho recensito qualche codice C e ha trovato qualcosa di equivalente a quanto segue:Struct con membro di matrice in C
struct foo {
int some_innocent_variables;
double some_big_array[VERY_LARGE_NUMBER];
}
essendo quasi, ma non del tutto, quasi interamente un novizio in C, ho ragione di pensare che questa struttura è terribilmente inefficiente nell'uso dello spazio a causa del membro dell'array? Cosa succede quando questa struct viene passata come argomento a una funzione? Viene copiato nella sua interezza nello stack, incluso l'array completo?
Sarebbe meglio nella maggior parte dei casi avere un double *some_pointer
?
L'inefficienza nell'uso dello spazio dipende dall'utilizzo o meno dello spazio allocato. Se l'intero array viene sempre utilizzato, un puntatore aggiungerà effettivamente alcuni byte di spazio sprecato per memorizzare il puntatore stesso (anche se trascurabile per i grandi array). – altendky