У меня есть этот кусок кода:переменная Access, которая была перезаписана в заданной области с помощью функции, которая использует глобальные переменные
#include <stdio.h>
// global variable definition
int x = 0;
void access_global(){
cout << "ACCESSING FROM access_global()" << endl;
if (x > 0){
cout << "LOCAL VARIABLE" << endl;
cout << x << endl;
}
else{
cout << "GLOBAL VARIABLE" << endl;
cout << x << endl;
}
}
int main(int, char*[])
{
// declare new variable in given scope with same name as global variable
int x = 1;
cout << "ACCESSING FROM main()" << endl;
if (x > 0){
cout << "LOCAL VARIABLE" << endl;
cout << x << endl;
}
else{
cout << "GLOBAL VARIABLE" << endl;
cout << x << endl;
}
access_global();
return 0;
}
Он выводит:
ACCESSING FROM main()
LOCAL VARIABLE
1
ACCESSING FROM access_global()
GLOBAL VARIABLE
0
Почему access_global()
не имеет доступа x
в main()
объем? Возможно ли изменить функцию access_global()
, чтобы она отображала первичные переменные x
от области main()
, и если они не определены, то отображаются те, которые определены за пределами main()
? Если вы не можете объяснить, почему? Благодаря
уточните, почему я был проголосован. Спасибо –
Локальные переменные внутри функции или if/else, петли не могут быть доступны извне. Это не похоже на пространства имен. – Raindrop7
@ Raindrop7 Что вы подразумеваете под словом «это не похоже на пространства имен». Можете ли вы опубликовать какую-либо ссылку или пояснить это в ответ? –