#c #scope
#c #область
Вопрос:
Вы можете найти мой код и его выходные данные ниже. Какой префикс (или что-то еще) я должен использовать в «SOMETHING» для доступа к j на среднем уровне (j == 2)?
Я пытался
main::j
Но это не сработало.
Код:
#include <iostream>
int j=3;//global
using std::cout;using std::endl;
int main(){
int j=2;//mid
cout<<"inside general main:n";
cout<<"cout<<j---"<<j<<endl;//prints 2
cout<<"cout<<::j---"<<::j<<endl;//prints 3
cout<<"inside for loop:n";
for(int i=0;i<1;i ){
int j=1;//inside
cout<<"cout<<j---"<<j<<endl;//prints 1
cout<<"cout<<::j---"<<::j<<endl;//prints 3
//cout<<"cout<<::j---"<<SOMETHING<<endl;//prints 2
}
return 0;
}
Вывод:
inside general main:
cout<<j---2
cout<<::j---3
inside for loop:
cout<<j---1
cout<<::j---3
Комментарии:
1. Одним из решений было бы не затенять ваши переменные в первую очередь, это плохая привычка.
2. Нет способа получить предыдущую область. Используйте разумные имена для ваших переменных, и, надеюсь, этого не произойдет.
3. У некоторых разработчиков / команд есть соглашение об именовании, которое различает имена на основе их области, например, я видел префикс (m_ для члена, s_ для статического, g_ для глобального, t_ для локального потока и т. Д.) Или суффикс (некоторые места используют _ для переменных-членов, некоторые для параметров функции).
4. Я знаю, что это плохая привычка. Я читаю книгу на C , я читал о локальном и глобальном доступе к переменным с тем же именем, но ничего не видел для промежуточных элементов с тем же именем. Мой вопрос чисто образовательный.
5. избегайте
_
префикса для переменных-членов. Я слышал, что это было опасно, вероятно, из-за уже_
префиксных символов. Предпочтительнееm_
, например.
Ответ №1:
Нет квалификации, которая ссылается на локальную область.
Просто используйте разные имена.
Комментарии:
1. Не могли бы вы сослаться на мой последний комментарий под вопросом?
2. Может быть, вы имеете в виду «Есть ли способ получить список всех выделенных ячеек памяти этой программой?». Нет.
3. Да, я имел в виду этот вопрос.
4. Хорошо, тогда нет, такого средства нет. Совет: вы можете использовать бесплатные инструменты, такие как AStyle (художественный стиль), для автоматического форматирования вашего кода.