En C, comment puis-je créer un "statique" tableau de taille constante avec mise à zéro des valeurs, mais sans calloc?

J'ai actuellement un peu de code dans une fonction qui ressemble à ceci:

    static const int kFrameCountSample = 250;
    static float * samples = (float *)calloc(kFrameCountSample, sizeof(float));

J'aime que les échantillons tableau est mis à zéro exactement une fois avec calloc().

Je peux aussi écrire le code pour samples est alloué sur la pile.

    static const int kFrameCountSample = 250;
    static float samples[kFrameCountSample];

mais maintenant samples n'est pas initialisé à zéro des valeurs. Comment pourrais-je également initialiser le temps est alloué?

samples n'est pas alloué sur la pile.
Il est statique. Ce n'est pas sur la pile. Et si vous êtes compilateur C est à distance moderne, vous pouvez simplement static float samples[kFrameCountSample] = {0};
Le tableau statique est alloué et initialisé au démarrage du programme, mais n'est pas réinitialisé après que, à moins que vous ne explicitement. Il ne sera pas réinitialisé à chaque fois que la fonction de contenant, il est appelé (si c'est dans une fonction).
Si elle est déclarée à l' static c'est certainement mise à zéro pour commencer - objets à durée de stockage statique, sans obligation d'initialiseur sont initialisées à zéro du type approprié.
Mon commentaire s'applique à C.

OriginalL'auteur Michael Bishop | 2013-08-16