Variáveis estáticas em C ++ e Java

Eu tenho uma pergunta: digamos que temos esta função: (em C ++)

int& f() {
    static int x = 0;
    return x;
} // OK

e

int& h() {
    int x=0;
    return x;
} // ERROR

Porqueh deu um erro? É por causa da palavra-chavestatic? eu encontreistatic palavra-chave permite que meux variável ao vivo depois que minha função é encerrada. Portanto, ainda posso acessar o local da memória de fora (outra função ou principal? Certo?). Em vez disso, intx = 0 é perdido depoish termina. Direito? Não tenho certeza se realmente entendi!

E o Java? Eu li que não posso declararstatic variáveis em métodos, mas apenas em classes.

Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion