تفاوت متغیرهای static با متغیرهای دیگرچیست؟
تفاوت متغیرهای static با متغیرهای سراسری این است که این متغیرها تنها در همان تابعی که تعریف شده اند شناخته شده اند.
و تفاوت این متغیرها با متغیرهای اتوماتیک این است که این متغیرها به صورت پایدار هستند وبا خروج از تابع از بین نمی روند.
*به غیر از متغیرها ، تابع ها نیز می توانند از نوع static تعریف شوند که در این صورت این تابع خارج از فایلی که در آن اعلان شده است ، قابل دسترسی نیست.
متغیر ثبات _register چیست؟
زمانی که متغیر از این نوع ثبت می شود مستقیما در CPU قرار می گیرد که این کار به سرعت بخشیدن به برنامه کمک می کند ، اما با محدودیت های زیادی روبرو است که ناشی از واقعیت های سخت افزاری است، در هر تابع تنها تعداد محدودی متغیر را می توان از این نوع تعریف کرد، اگر تعداد متغیرهایی که از این نوع تعریف می شوند زیاد شود کامپایلر کلمه register را نادیده می گیرد وبرنامه را کامپایل می کند.
اعلان این متغیر به صورت زیر است:
register int x;
register char c;
دقت کنید که اعلان ثبات_register را تنها می توان بر متغیرهای اتوماتیک و آرگومان های یک تابع اعمال کرد.