Struct avec les membres de la pile en C

Récemment, j'ai revu certains de code C et de trouver quelque chose d'équivalent à celui-ci:

struct foo {
    int some_innocent_variables;
    double some_big_array[VERY_LARGE_NUMBER];
}

Presque, mais pas tout à fait, presque entièrement un débutant en C, je suis en droit de penser que cette structure est terriblement inefficace dans son utilisation de l'espace en raison du membre du groupe? Ce qui se passe lorsque cette structure est passée comme argument à une fonction? Est-il copié dans son intégralité sur la pile, y compris la gamme complète?

Serait-il préférable dans la plupart des cas d'avoir un double *some_pointer à la place?

L'inefficacité dans l'utilisation de l'espace dépend de si oui ou non vous utilisez l'espace alloué. Si l'ensemble du tableau est toujours utilisée alors un pointeur ajoutera quelques octets d'espace perdu pour stocker le pointeur lui-même (même si négligeable pour les grands réseaux).

OriginalL'auteur lindelof | 2010-09-13