C Proqramlaşdırmasında Xarici Saxlama Sınıfı

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Bu saxlama sinfi qlobal dəyişənlər üçün də istifadə olunur. Həm də statik bir dəyişən kimi davranır. Ancaq əhatə dairəsi eyni proqramların digər sənədlərinə də genişlənir. Bu o deməkdir ki, bir proqram icra olunduqda bir çox əlaqəli sənədlər icra edilə bilər. Fərqli sənədlərdə mövcud olan funksiyalarda hər hansı bir dəyişən yuxarıdakı statik dəyişən kimi istifadə olunarsa, dəyişəni extern elan edirik. Bu dəyişən RAM yaddaşında da saxlanılır və blokda və ya funksiyada elan edildikdə avtomatik olaraq sıfıra başlayır.

İki faylı olan bir proqramı nəzərdən keçirin - biri əsas funksiyaya sahib olmaq üçün və başqa bir faylda funksiyanın neçə dəfə çağırıldığını izləyir. Əsas funksiya faylı exterExample.c, digər fayl isə calcCounter.c olsun

// exterExample.c
#include <stdio.h>

int intTotal;
extern void calcCount ();

void main (){
  // Initial value of intTotal cannot be displayed here since it is declared in other file and is not yet 
called

  	calcCount ();
	printf ("\nValue at intTotal after calling the function is %d ", intTotal);
	calcCount ();
	printf ("\nValue at intTotal after the 2nd call to function is %d ", intTotal);

Burada əvvəllər müzakirə edildiyi kimi iki sənədimiz var. Birinci fayl əsas funksiyanı ehtiva edir; bu səbəbdən həmin sənəddən proqram icra olunmağa başlayır. Buna görə istifadə olunan bütün funksiyaları və dəyişənləri elan etməliyik. Əsas funksiyada yazılacağına görə intTotal-ı normal qlobal dəyişən elan etdik. Ancaq eyni digər sənəddə də istifadə ediləcək. Buna görə qlobal bir dəyişən olmalıdır. Ancaq burada statik deyil. CalcCount () funksiyasını kompilyatorun başqa bir sənəddə yazıldığını və bu faylda çağırılması lazım olduğunu göstərmək üçün onu extern elan etdik. Başqa sözlə, extern dəyişənlərin və funksiyaların fayllar arasında istifadə olunmasına imkan verən yeganə açar sözdür. İndi həmin funksiyanı sanki eyni faylda olduğu kimi çağırırıq.

İkinci fayl calcCounter.c, başqa bir fayldan qlobal bir dəyişən olduğunu və dəyərinin bu faylda istifadə edilməsi lazım olduğunu göstərən bir xarici dəyişən ehtiva edir. Extern elan edildiyi üçün, calcCount () funksiyası ilk dəfə çağırıldıqda dəyəri sıfıra başlayır. Bu funksiyada intTotal dəyərini 1 artırır. Beləliklə dəyəri əsas funksiyada 1 kimi yazdırır. Xarici olaraq elan edildiyi üçün hər iki faylda da intTotal dəyərini saxlayır. Funksiyaya ikinci dəfə deyildikdə, ikinci fayla gəlir və hələ də intTotal dəyərini 1 olaraq saxlayır. Bunun səbəbi intTotal-ın extern olduğu və proqram başladıldıqda artıq sıfıra başlandığıdır. Yenidən intTotal dəyərini artırır və əsas funksiyada dəyərini 2 olaraq göstərir. Extern dəyərini qorumaq üçün fayllar arasında qlobal dəyişən olaraq necə istifadə olunur.

Crack Sistemi Dizayn Müsahibələri
Translate »