PDA

View Full Version : سوال: تفاوت بین متغیر سراسری با استاتیک



irpersian20
یک شنبه 10 شهریور 1392, 00:40 صبح
با سلام
متغیر سراسری با استاتیک در سی پلاس پلاس با هم چه تفاوتی دارد/?

pooyan.a
یک شنبه 10 شهریور 1392, 11:39 صبح
سلام
به آدرس زیر برو شاید بتونه کمکت کنه
http://narming.persianblog.ir/post/7

omidshaman
یک شنبه 10 شهریور 1392, 20:37 عصر
فرقشون اینه که
Static توی فایل یا کلاس اگر تعریف بشه Scope مشخص داره ولی lifetime ش تا اخر برنامست یعنی یک بار که صدا زده بشه تا اخر برنامه تو خافظه می مونه
توی کلاس ها هم برای این استفاده میشه که یک متغیر بین چند تا ابجکت از اون کلاس فقط یک بار ساخته بشه یا برای ساختن کلاس های singleton.
http://en.wikipedia.org/wiki/Singleton_pattern
ولی global رو همه ی فانکشن ها و کلاس های فایل می تونن دسترسی داشته باشن
و این که متغیر static رو همه جای برنامه میشه استفاده کرد ولی گلوبال مخصوص یک فایل خاصه برای استفاده توی بقیه فایل ها باید ازextern استفاده کنی

سلام
به آدرس زیر برو شاید بتونه کمکت کنه
http://narming.persianblog.ir/post/7
اون لینکی هم که شما دادی شعر زیاد نوشته
این جاهاش غلطه

متغیری از نوع static، فقط یکبار در اول برنامه ایجاد میشود و یکبار هم در اولین رسیدن به مقداردهی اولیه آن (در دستور تعریفش) مقدار اولیه میگیرد.
باید توجه داشت که مفهوم scope یک متغیر، با مدت ماندگاری آن فرق میکند. مثلاً برای یک متغیر static تعریف شده در یک تابع، scope متغیر همان بلاک تابع است، اما مدت ماندگاری آن از ابتدا تا انتهای برنامه است
ماندگاری از اول برنامه نیست ماندگاریش از اون وقتیه که مثلا فانکشنی که توش متغیر Static داریم صدا زده بشه همون موقع هم ایجاد میشه.