Recents in Beach

C ભાષામાં storage class વિશે સમજાવો

C ભાષામાં storage classes એ ખૂબ જ મહત્વપૂર્ણ વિષય છે. ચાલો હું તેને સરળ ગુજરાતીમાં સમજાવું.

 

C ભાષામાં storage class


 Storage Class શું છે?

 

C ભાષામાં, દરેક variable અને function ની એક Storage Class હોય છે. Storage Class નીચેની બે મુખ્ય બાબતો નક્કી કરે છે:

 

1.  Variable/Function નો Scope (ક્ષેત્ર): તે કયા ભાગના પ્રોગ્રામમાં ઍક્સેસ કરી શકાય છે (જેમ કે સિર્ફ એક function અંદર અથવા સમગ્ર પ્રોગ્રામમાં).

2.  Variable/Function નો Lifetime (આયુષ્ય): તે variable મેમરીમાં કેટલા સમય સુધી રહેશે (જેમ કે function ચાલતી વખતે જ અથવા પ્રોગ્રામ બંધ થયા સુધી).

 

 

 C ભાષામાં મુખ્ય Storage Classes ના પ્રકારો

 

C ભાષામાં મુખ્યત્વે નીચેની ચાર Storage Classes હોય છે:

 

1.  auto

2.  register

3.  static

4.  extern

 

તેને સમજવા માટે નીચેનું વિગતવાર સમજવું જરૂરી છે.

 

 

 1. auto Storage Class (ઓટો સ્ટોરેજ ક્લાસ)

 

   ગુજરાતી અર્થ: સ્વચાલિત

   ડિફોલ્ટ વર્તન: જો તમે કોઈ variable બનાવો અને તેની પાસે કોઈ storage class નિર્દિષ્ટ ન કરો, તો તે auto storage class નો હોય છે.

   સ્થાન (Storage): variable RAM (મેમરી) માં સંગ્રહિત થાય છે.

   ડિફોલ્ટ વેલ્યુ (Default Value): જો તમે auto variable ની કોઈ શરૂઆતની કિંમત (initial value) સેટ ન કરો, તો તેમાં  garbage value (કચરો મૂલ્ય) હોય છે.

   Scope (ક્ષેત્ર): માત્ર તે function અથવા block ({ } ની અંદર) જ્યાં તેને બનાવવામાં આવ્યો હોય.

   Lifetime (આયુષ્ય): જ્યાં સુધી તે function અથવા block ચાલુ છે ત્યાં સુધી.

 

ઉદાહરણ:

```c

include <stdio.h>

 

void myFunction() {

    auto int x = 10; // 'auto' keyword નો ઉપયોગ કરવો optional છે.

    int y = 20;      // આ પણ auto variable જ છે.

 

    printf("x = %d, y = %d\n", x, y);

}

 

int main() {

    myFunction();

    // printf("%d", x); // આ એરર આપશે કારણ કે 'x' અહીં ઍક્સેસ કરી શકાય નહીં.

    return 0;

}

```

 

 

 2. Register Storage Class (રજિસ્ટર સ્ટોરેજ ક્લાસ)

 

   ગુજરાતી અર્થ: નોંધણી કરવી

   ઉદ્દેશ્ય: CPU ના register માં variable ને સંગ્રહિત કરવાનો પ્રયાસ કરે છે. Register CPU ની અંદરની ખૂબ જ ઝડપી મેમરી છે, તેથી જે variables નો ઘણી વાર ઉપયોગ થાય છે (જેમ કે loop counter) તેને register માં રાખવાથી પ્રોગ્રામની સ્પીડ વધે છે.

   નોંધ: આ માત્ર એક વિનંતી (request) છે. જો register ભરેલા હોય, તો compiler તેને સામાન્ય auto variable તરીકે જ RAM માં સંગ્રહિત કરશે.

   ડિફોલ્ટ વેલ્યુ: garbage value

   Scope: માત્ર તે function અથવા block અંદર.

   Lifetime: function/block ચાલતી વખતે.

 

ઉદાહરણ:

```c

include <stdio.h>

 

int main() {

    register int counter; // ઝડપી ઍક્સેસ માટે registerમાં રાખવાનો પ્રયાસ.

 

    for(counter = 1; counter <= 1000; counter++) {

        printf("%d\n", counter);

    }

    // 'counter' નો અહીં ઘણી વાર ઉપયોગ થશે, તેથી register વર્ગ સારો છે.

    return 0;

}

```

મહત્વની નોંધ: register variable નો & (address-of) ઓપરેટર સાથે ઉપયોગ કરી શકાય નહીં કારણ કે CPU રજિસ્ટરનું સ્થાન (address) RAM જેવું નથી હોતું.

`scanf("%d", &counter);` // ભૂલ (Error) આપશે.

 

 

 3. Static Storage Class (સ્ટેટિક સ્ટોરેજ ક્લાસ)

 

   ગુજરાતી અર્થ: સ્થિર

   ઉદ્દેશ્ય: Variable નું મૂલ્ય function call વચ્ચે જાળવી રાખવું.

   સ્થાન: RAM માં.

   ડિફોલ્ટ વેલ્યુ: જો initial value ન આપો તો તે સ્વયંભૂબે 0 થાય છે.

   Scope: તે function અથવા file અંદર (જ્યાં તે declare થયેલ છે).

   Lifetime: પ્રોગ્રામ બંધ થયા સુધી.

 

ઉદાહરણ:

```c

include <stdio.h>

 

void count() {

    static int s = 0; // static variable, હર વખતે 0 થશે નહીં.

    s++;

    printf("Static variable s = %d\n", s);

}

 

int main() {

    count(); // s = 1

    count(); // s = 2

    count(); // s = 3

    // નોંધ લો: દરેક વાર function ફરી શરૂ થાય છે પણ static variableની value જાળવી રહે છે.

    return 0;

}

```

આઉટપુટ:

```

Static variable s = 1

Static variable s = 2

Static variable s = 3

```

 

 

 4. Extern Storage Class (એક્સ્ટર્ન સ્ટોરેજ ક્લાસ)

 

   ગુજરાતી અર્થ: બાહ્ય

   ઉદ્દેશ્ય: બીજી file માં define કરેલ variable અથવા function નો ઉપયોગ આ file માં કરવો.

   સ્થાન: RAM માં.

   ડિફોલ્ટ વેલ્યુ: 0

   Scope: જે file માં extern તરીકે declare કરેલ છે તે સમગ્ર પ્રોગ્રામ (બધી files) માં.

   Lifetime: પ્રોગ્રામ બંધ થયા સુધી.

 

ઉદાહરણ:

ધારો કે અમારી પાસે બે files છે: `main.c` અને `external.c`

 

File 1: external.c

```c

// આ file માં global variable અને function define કરેલ છે.

int globalVar = 50; // global variable

 

void demoFunction() {

    // કંઈક કાર્ય

}

```

 

File 2: main.c

```c

include <stdio.h>

 

extern int globalVar; // extern વપરાશથી કહેવું છે કે 'globalVar' બીજી file માં છે.

extern void demoFunction(); // function માટે પણ extern વપરાય છે.

 

int main() {

    printf("Global variable from another file: %d\n", globalVar);

    demoFunction();

    return 0;

}

```

આ પ્રોગ્રામ compile કરવા માટે તમારે બન્ને filesને એકસાથે જોડવી પડશે (link કરવી પડશે).

`gcc main.c external.c -o myProgram`

 

 

ટિપ્પણી પોસ્ટ કરો

0 ટિપ્પણીઓ