Junior
Кай ва қачон ва чанд муддат тағйирёбҳои глобалӣ ва маҳаллии C++ мавҷуданд?
sobes.tech AI
Ҷавоб аз AI
Глобалии тағамдар
- Мөчлөө: Программыг эхлүүлснээс дуусах хүртэл.
- Хадгалах газар: Ерөнхийдөө статик санах ойд (.data эсвэл .bss хэсэгт гүйцэтгэх файлын).
- Эхлүүлэх:
- Файлын түвшинд тодорхойлсон статик бус глобал хувьсагчууд, нарийн бүтэцтэй конструкторуудтай,
main()-г дуудсангаас өмнө эхлүүлнэ. - Тэгийн эхлүүлэлт: жишээ нь, int i = 0; зэрэг хувьсагчид
main()-г дуудсангаас өмнө эхлүүлнэ. constэсвэл статик хугацаатай хувьсагчид програмыг ачаалж эхлэх үед эхлүүлнэ.
- Файлын түвшинд тодорхойлсон статик бус глобал хувьсагчууд, нарийн бүтэцтэй конструкторуудтай,
- Хүрээ: Бүх функцүүдэд харагдана, харагдах хүрээ дотор.
Орон нутгийн хувьсагчид
- Мөчлөө: Хувьсагч тодорхойлсон цэгээс эхлэн, энэ цэгээс гарах хүртэл.
- Хадгалах газар: Ерөнхийдөө стек дээр (автомат хувьсагчид). Статик орон нутгийн хувьсагчид статик санах ойд хадгалагдана.
- Эхлүүлэх:
- Автомат орон нутгийн хувьсагчид анхдагчаар эхлүүлдэггүй ("хог" агуулсан). Тодорхойлох шаардлагатай.
- Статик орон нутгийн хувьсагчид анх удаа хүрч, эхлүүлнэ.
- Хүрээ: Зөвхөн тодорхойлсон цэгийн дотор харагдана.
Жишээ
// Глобал хувьсагч
int global_variable = 10;
void some_function() {
// Орон нутгийн хувьсагч (автомат)
int local_variable_1; // Эхлүүлээгүй
// Орон нутгийн хувьсагч (автомат) эхлүүлсэн
int local_variable_2 = 20;
// Статик орон нутгийн хувьсагч
static int static_local_variable = 30; // Нэг удаа эхлүүлнэ
// Глобал хувьсагчид хандах
global_variable++;
// Орон нутгийн хувьсагчид хандах
local_variable_1 = global_variable;
static_local_variable++;
}
int main() {
some_function();
some_function(); // static_local_variable үнэ цэнээ хадгалсан
// Глобал хувьсагч энд хүртээмжтэй
// local_variable_1 ба local_variable_2 хүртээмжгүй
return 0;
}
Харьцуулсан хүснэгт
| Онцлог | Глобал хувьсагчид | Орон нутгийн хувьсагчид (автомат) | Статик орон нутгийн хувьсагчид |
|---|---|---|---|
| Мөчлөө | Програм эхлүүлснээс дуусах хүртэл | Тодорхойлолтоос гарах хүртэл | Тодорхойлолтод анх хүрсэнээс эхлэн төгсгөл хүртэл |
| Хадгалах газар | Статик санах ой (.data, .bss) | Стек | Статик санах ой (.data, .bss) |
| Эхлүүлэх | main()-г дуудсангаас өмнө эсвэл програм ачаалж эхлэхэд |
Анхдагчаар эхлүүлдэггүй. Тодорхойлох шаардлагатай | Нэг удаа анх хүрсэн үед эхлүүлнэ |
| Хүрээ | Файл доторх бүх функцэд харагдана | Зөвхөн тодорхойлсон цэг дотор харагдана | Зөвхөн тодорхойлсон цэг дотор харагдана |