Recientemente he revisado algo de código C y encontró algo equivalente a lo siguiente:Struct con miembro de la matriz en C
struct foo {
int some_innocent_variables;
double some_big_array[VERY_LARGE_NUMBER];
}
ser casi, pero no del todo, casi en su totalidad un novato en C, Estoy en lo cierto al pensar que esta estructura es terriblemente ineficiente en el uso del espacio debido al miembro de la matriz? ¿Qué sucede cuando se pasa esta estructura como argumento a una función? ¿Está copiado en su totalidad en la pila, incluida la matriz completa?
¿Sería mejor en la mayoría de los casos tener un double *some_pointer
en su lugar?
La ineficiencia en el uso del espacio depende de si usa el espacio asignado o no. Si toda la matriz se usa siempre, un puntero agregará algunos bytes de espacio perdido para almacenar el puntero (incluso si es insignificante para las matrices grandes). – altendky