نمایش نتایج 1 تا 4 از 4

نام تاپیک: متغیرهای استاتیک محلی

  1. #1

    متغیرهای استاتیک محلی

    با سلام
    فرض کنید یک متغیر استاتیک رو توی یه تابع تعریف کردیم حالا این متغیر ؛ یه متغیر استاتیک محلیه
    در مورد متغیرهای استاتیک محلی در کتاب آقای جعفر نژاد قمی نوشته شده که این متغیر ها در زمان فراخوانی تابع ایجاد میشن در حالی که توی کتاب آقای دیتل نوشته :
    For static-storage class variables, storage is allocated and initialized once when program begins execution
    و در جای دیگه نوشته :
    Local variables declared static still have block scope even though they exist from the time the program begins execution
    چیزی که من از این چند خط انگلیسی حالیم شد اینه که متغیرهای استاتیک محلی از موقعی که برنامه شروع به اجرا میکنه در حافظه جا میگیرن و ممکنه اصلا تابع مربوطه فراخوانی نشه ولی با این وجود یه جایی برای متغیر در نظر گرفته میشه حالا من موندم مطلب آقای قمی درسته یا آقای دیتل یا من بد متوجه شدم هر دو مطلب یکین ؟!در هر حال میخواستم بدونم متغیر های استاتیک محلی از زمتنی که برنامه شروع میشه ایجاد میشه یا نه موقع فراخوانی تابع مربوطه ؟

  2. #2
    متغیرهای استاتیک توی برنامه، مثل سایر متغیرها با شروع اجرای برنامه ایجاد میشن.
    در مورد متغیرهای استاتیکی هم که داخل توابع اعلان میشوند فرقی نمیکنه موقع شروع برنامه ایجاد بشن یا موقع فراخوانی تابع؛ مهم اینه که دیگه از حافظه خارج نمیشن مگر موقع اتمام برنامه.
    یعنی اگه حتی تابع مربوطه هم دوباره فراخوانی بشه دیگه این متغیر مقداردهی اولیه نمیشه،چون یکبار مقداردهی شده.

    Local variables declared static still have block scope even though they exist from the time the program begins execution
    توضیح : این متغیرها در تمام مدت اجرای برنامه در حافظه وجود دارند ولی فقط در بلوک یا دامنه مربوط به خودشون قابل دسترسی هستند.

    این متغیرها فقط و فقط یکبار مقداردهی اولیه میشوند .

    اگه توی کتاب جعفرنژاد قمی بنویشه که "این متغیر ها در زمان اولین فراخوانی تابع ایجاد میشن " جمله اش درست تر میشه.

    موفق باشید.

  3. #3
    با تشکر از پاسخ شما با این حال این متغیراستاتیک محلی موقع شروع برنامه ایجاد میشه یا موقع اولین فراخوانی تابع ؟

  4. #4
    با تشکر از پاسخ شما با این حال این متغیراستاتیک محلی موقع شروع برنامه ایجاد میشه یا موقع اولین فراخوانی تابع ؟
    دقیقاً نمیدونم.

    بستگی داره به اینکه با شروع برنامه برای توابع و متغیرهای محلی داخل آنها فضا گرفته بشه یا به صورت پویا و با فراخوانی تابع بهش فضا اختصاص داده بشه.

    خودم احتمال میدم با اولین فراخوانی تابع به این متغیرها فضا اختصاص داده میشه.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •