C xotira sinflari (storage classes)


ULASHISH

C xotira sinflari (storage classes)

Xotira sinflari o‘zgaruvchilarning yashash muddati, ko‘rinuvchanligi va xotiradagi joylashuvini belgilaydi.

C tilida to‘rtta asosiy xotira sinfi spetsifikatori mavjud:

  • auto
  • static
  • register
  • extern

Ko‘rinish sohasi (scope) va xotira sinflari o‘rtasidagi farq

Ko‘rinish sohasi (scope) o‘zgaruvchidan qayerda foydalanish mumkinligini belgilaydi, xotira sinflari esa u qancha vaqt yashashini va qayerda saqlanishini belgilaydi. Bu bob C ko‘rinish sohasi (scope) bobining davomidir.


auto

auto kalit so‘zi lokal o‘zgaruvchilar uchun ishlatiladi. U funksiyalar ichida e’lon qilingan o‘zgaruvchilar uchun standart holat hisoblanadi, shuning uchun kamdan-kam hollarda aniq yoziladi.

Misol

int main() {
  auto int x = 50;  // Same as just: int x = 50;
  printf("%d\n", x);
  return 0;
}

O‘zingiz sinab ko‘ring »


static

static kalit so‘zi o‘zgaruvchi yoki funksiyaning yashash muddati va ko‘rinuvchanligi jihatidan qanday ishlashini o‘zgartiradi:

  • Statik lokal o‘zgaruvchilar funksiya chaqiruvlari orasida o‘z qiymatini saqlab qoladi.
  • Statik global o‘zgaruvchilar/funksiyalar o‘z faylidan tashqarida ko‘rinmaydi.

Misol

void count() {
  static int myNum = 0; // Keeps its value between calls
  myNum++;
  printf("num = %d\n", myNum);
}

int main() {
  count();
  count();
  count();
  return 0;
}

Natija:

num = 1
num = 2
num = 3

O‘zingiz sinab ko‘ring »

Farqni ko‘rish uchun misoldan static kalit so‘zini olib tashlab ko‘ring.



register

register kalit so‘zi o‘zgaruvchini (tezroq murojaat qilish uchun) protsessor registrida saqlashni taklif qiladi.

register o‘zgaruvchisining manzilini & yordamida olib bo‘lmaydi.

Eslatma: register kalit so‘zi deyarli eskirgan - zamonaviy kompilyatorlar registrlarda saqlash uchun eng mos o‘zgaruvchilarni avtomatik tanlaydi, shuning uchun odatda undan foydalanishingiz shart emas.

Misol

int main() {
  register int counter = 0;
  printf("Counter: %d\n", counter);
  return 0;
}

O‘zingiz sinab ko‘ring »


extern

extern kalit so‘zi kompilyatorga o‘zgaruvchi yoki funksiya boshqa faylda aniqlanganini bildiradi.

U odatda bir nechta manba fayllari bilan ishlashda qo‘llaniladi.

1-fayl: main.c

#include <stdio.h>

extern int shared;  // Declared here, defined in another file

int main() {
  printf("shared = %d\n", shared);
  return 0;
}

2-fayl: data.c

int shared = 50;  // Definition of the variable

Ikkala faylni birgalikda kompilyatsiya qiling:

gcc main.c data.c -o program


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!