PDA

نسخه کامل مشاهده نسخه کامل : متغير Static



Oracle_Eldorado
30-04-2007, 13:09
با سلام .
من يه سورس دارم كه از متغير Static استفاده مي كنه .
ميخواستم بدونم كه چه تفاوت هايي ميان متغير هاي Static و معمولي وجود داره ؟:18:
ممنون ميشم يه توضيحي بديد :8:

Mitibob
30-04-2007, 15:32
متغیر Static وقتی از Sub یا Function خارج شی بعذ دوباره برگردی مقدار قبلب خودش رو حفظ کردی فرقش هم با متغیر های عمومی اینه که خارج از Sub یا Function بهش دسترسی نداری.

A.A
30-04-2007, 17:05
با سلام خدمت شما دوست عزیز
توجه کنید هر متغیر ویزگی هایی مثل نام ، نوع ، اندازه ، مقدار ، کلاس حافظه ، حوزه و نوع پیوند دارد .
حال در زمانی که یک تابع فراخوانی میشود یک activation record برای ان به صورت stack ساخته میشود که نام متغیر ها و نقطه برگشت به تابع فراخوانده شده در ان قرار دارد مثل main .
اما تفاوت متغیرهایی از نوع static در این است که زمانی که شما از ان استفاده میکنید یک حافظه ثابت یا ایستا گرفته میشود و متغیر به محض تغییر کردن یا پاک شدن activation record از بین نمیرود و تا انتهای برنامه در تابع main ان حافظه تعلق داده شده را حفظ میکند در واقع این طور نیز میتوان گفت که متغیرهای معمولی یا auto به محض خارج شدن و یا پاک شدن activation record از بین میروند ولی متغیرهای static تا انتهای برنامه حافظه خود را حفظ میکنند البته این به این معنا نیست که شما از هر جایی قابلیت دسترسی به ان را داشته باشید بلکه scope یا حوزه این متغیرها هم محدود به همان تابع یا بلاک و یا activation record خودشان است و فقط در همان ناحیه کار میکنند .

Oracle_Eldorado
30-04-2007, 19:48
ممنون از دوستان .
اگه باز هم سئوال بود مزاحم میشم !