Vektoret static dhe automatic

Nje variabel static I deklaruar brenda nje funksioni ekziston gjate gjithe programit por eshte i dukshem vetem brenda trupit te funksionit.

Nese deklarojme nje vektor si static brenda nje funksioni vlerat e tij inicializohen me 0 automatikisht dhe heret e tjera qe do te thirret funksioni ato do te ruajne vleren e mbetur ne thirrjen paraardhese sic tregohet ne shembullin e meposhtem.

Sa here qe te thirret funksioni vektor_automatik() vektori (automatic) array2 do te inicializohet me vlerat 1, 2 dhe 3.

Ndersa kur thirret funksioni vektor_static(), heren e pare vektori array1 (static) do te inicializohet me te gjitha vlerat 0. Ne thirrjet e tjera te ketij funksioni vektori array1 do te ruaje vlerat e mbetura nga thirrja e kaluar e funksionit.

 


     // Shembull i vektoreve static dhe automatic

#include <iostream>

using namespace std;

void vektor_static( void );

void vektor_automatik( void );

int main()

{

   cout << "Thirrja e pare e cdo funksioni:\n";

   vektor_static();

   vektor_automatik();

 

   cout << "\n\nThirrja e dyte e cdo funksioni:\n";

   vektor_static();

   vektor_automatik();

   cout << endl;

   system ("pause");

   return 0;

}

void vektor_static( void )

{

   static int array1[ 3 ]; 

   int i;

   cout << "\nVlerat ne hyrje te vektor_static:\n";

   for ( i = 0; i < 3; i++ )

   cout << "array1[" << i << "] = " << array1[ i ] << "  ";

   cout << "\nVlerat ne dalje te vektor_static:\n";

   for ( i = 0; i < 3; i++ )

      cout << "array1[" << i << "] = "

           << ( array1[ i ] += 5 ) << "  ";

}

void vektor_automatik( void )

{

   int i;

   static int array2[ ] = { 1, 2, 3 };

   cout << "\n\nVlerat ne hyrje te  vektor_automatik:\n";

   for ( i = 0; i < 3; i++ )

      cout << "array2[" << i << "] = "

       << array2[ i ] << "  ";

   cout << "\nVlerat ne dalje te vektor_automatik:\n";

   for ( i = 0; i < 3; i++ )

      cout << "array2[" << i << "] = "

           << ( array2[ i ] += 5 ) << "  ";

}

 

/* Printon

Thirrja e pare e cdo funksioni:

 

Vlerat ne hyrje te vektor_static:

array1[0] = 0  array1[1] = 0  array1[2] = 0

Vlerat ne dalje te vektor_static:

array1[0] = 5  array1[1] = 5  array1[2] = 5

 

Vlerat ne hyrje te  vektor_automatik:

array2[0] = 1  array2[1] = 2  array2[2] = 3

Vlerat ne dalje te vektor_automatik:

array2[0] = 6  array2[1] = 7  array2[2] = 8

 

Thirrja e dyte e cdo funksioni:

 

Vlerat ne hyrje te vektor_static:

array1[0] = 5  array1[1] = 5  array1[2] = 5

Vlerat ne dalje te vektor_static:

array1[0] = 10  array1[1] = 10  array1[2] = 10

 

Vlerat ne hyrje te  vektor_automatik:

array2[0] = 6  array2[1] = 7  array2[2] = 8

Vlerat ne dalje te vektor_automatik:

array2[0] = 11  array2[1] = 12  array2[2] = 13

Press any key to continue . . .

*/