Sur le local et le global variables statiques en C++

C++ Primer dit

Chaque local statique de la variable est initialisée avant de la première fois
l'exécution passe par la définition de l'objet. Local de la statique sont
pas détruite quand une fonction se termine; ils sont détruits lorsque le programme
se termine.

Sont locales variables statiques toute différente de la global variables statiques? D'autres ensuite l'emplacement où elles sont déclarées, quoi d'autre est-il différent?

void foo () {   
    static int x = 0;
    ++x;

    cout << x << endl;
}

int main (int argc, char const *argv[]) {
    foo();  //1
    foo();  //2
    foo();  //3
    return 0;
}

comparer avec

static int x = 0;

void foo () {   
    ++x;

    cout << x << endl;
}

int main (int argc, char const *argv[]) {
    foo();  //1
    foo();  //2
    foo();  //3
    return 0;
}

OriginalL'auteur JAM | 2012-08-29