متغیرها و توابع استاتیک
Author: admin // Category: C++ به هم پیوستگی و پروژه های, زبان برنامه نویسی ++C
به برنامه ی زیر توجه کنید:
#include <iostream>
using namespace std;
void Starter(int y)
{
double a = 112.50;
double b = 175.25;
a = a / y;
b = b + 2;
cout << "y = " << y << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "b / a = " << b / a << "\n\n";
}
int main()
{
Starter(2);
Starter(2);
Starter(2);
Starter(2);
return 0;
}
نتیجه ی اجرای برنامه به صورت زیر خواهد بود:
y = 2
a = 56.25
b = 177.25
b / a = 3.15111
y = 2
a = 56.25
b = 177.25
b / a = 3.15111
y = 2
a = 56.25
b = 177.25
b / a = 3.15111
y = 2
a = 56.25
b = 177.25
b / a = 3.15111
تابع Starter() هنگام فراخوانی یک آرگومان پاس شده را دریافت می کند.همچنین تابع فراخوانی شده,آرگومان یکسانی را در چند مرتبه دریافت می کند.نتیجه را ملاحظه کنید,آرگومان پاس شده به تابع و متغیر های محلی ایجاد شده درون تابع فراخوانی شده,هربار که تابع فراخوانی می شود دارای مقدار یکسانی هستند و هنگامی که از تابع خارج شوید همان مقدار باقی می ماند.
ما می دانیم هنگامی که تابعی تعریف می شود,هر متغیر محلی تعریف شده متعلق به آن خواهد بود و توسعه ی اثر آن فراتر از بدنه ی تابع نخواهد بود.اگر می خواهید متغیر محلی ایجاد شده مقدار تغییر یافته را هنگام خروج از تابع حفظ کند,آن را به صورت استاتیک ایجاد نمایید.
برای ایجاد متغیر استاتیک,کلمه ی کلیدی static را در سمت چپ نوع داده ی متغیر تایپ نمایید.برای مثال اگر قصد داشته باشید متغیر Radius را در تابع Area() به صورت استاتیک ایجاد کنید,بنویسید:
double Area()
{
static double Radius;
}
هنگامی که یک متغیر را به صورت استاتیک ایجاد می کنید,آن با مقدار صفر مقداردهی می شود.در غیر اینصورت می توانید آن را با مقدار مورد نظر خودتان هنگام ایجاد آن مقدار دهی کنید.برای استاتیک ساختن متغیر محلی در تابع Starter()a آن را به صورت زیر ایجاد کنید:
void Starter(int y)
{
static double a = 112.50;
static double b = 175.25;
a = a / y;
b = b + 2;
cout << "y = " << y << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "b / a = " << b / a << "\n\n";
}
حال نتیجه ی اجرای برنامه به صورت زیر خواهد بود:
y = 2
a = 56.25
b = 177.25
b / a = 3.15111
y = 2
a = 28.125
b = 179.25
b / a = 6.37333
y = 2
a = 14.0625
b = 181.25
b / a = 12.8889
y = 2
a = 7.03125
b = 183.25
b / a = 26.0622
توجه داشته باشید هر متغیر محلی هنگام خروج تابع مقدار جدید تغییر یافته را حفظ می کند.از آنجاییکه آرگومان تابع در هر بار که تابع فراخوانی می شود می تواند مقادیر مختلفی دریافت کند.ما می توانیم برنامه ی خود را با پاس کردن مقادیر متفاوت به صورت زیر تست کنیم:
#include <iostream>
using namespace std;
void Starter(int y)
{
static double a = 112.50;
static double b = 175.25;
a = a / y;
b = b + 2;
cout << "y = " << y << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "b / a = " << b / a << "\n\n";
}
int main()
{
Starter(2);
Starter(5);
Starter(14);
Starter(25);
return 0;
}
نتیجه ی اجرای برنامه به صورت زیر خواهد بود:
y = 2
a = 56.25
b = 177.25
b / a = 3.15111
y = 5
a = 11.25
b = 179.25
b / a = 15.9333
y = 14
a = 0.803571
b = 181.25
b / a = 225.556
y = 25
a = 0.0321429
b = 183.25
b / a = 5701.11
توابع استاتیک
همانند یک متغیر,تابع نیز می تواند به صورت استاتیک ایجاد و یا تعریف شود.به مثال زیر توجه کنید:
#ifdef __BORLANDC__
#pragma argsused
#endif
#include <iostream>
// #include "Exercise.h"
using namespace std;
static int GetNumberOfPages()
{
int pages = 842;
return pages;
}
int main( int argc, char * argv[] )
{
cout << "This book contains " << GetNumberOfPages() << " pages";
return 0;
}
|
|
آ
|
آ
|
|
|



