У меня есть вопрос: давайте говорить, что мы имеем эту функцию: (в C++)Статические переменные в C++ и Java
int& f() {
static int x = 0;
return x;
} // OK
и
int& h() {
int x=0;
return x;
} // ERROR
Почему h
выдаст ошибку? Это из-за ключевого слова static
? Я нашел static
ключевое слово позволяет моей переменной x
жить после того, как моя функция завершена. Таким образом, я все еще могу получить доступ к этой ячейке памяти извне (другая функция или главная?)? Вместо этого int x = 0
теряется после завершения h
. Правильно? Я не уверен, что у меня это получилось!
А как насчет Java? Я читал, что не могу объявлять переменные static
в методах, но только в классах.
спасибо.
Это не является ошибкой, если вы не используете '-Werror'. Но http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope – ghostofstandardspast
C++: да. Java: один вопрос за раз! – juanchopanza
По одному за раз. Попросите C++ или Java. И да, ключевое слово 'static' имеет другое значение в Java. –