موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تفاوت تابع main با بقیه‌ی تابع‌ها

0 امتیاز
851 نمایش

تابع main در موارد زیر با توابع معمولی تفاوتی داره؟
‍۱- نحوه‌ی تعریف، اعلان و مقداردهی متغیرها
۲- محدوده و طول عمر متغیرها
۳- روش پیاده‌سازی در ماشین
۳- روش فراخوانی تابع

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده جمعه ۱۶ فروردین ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

۱- در مورد متغیرهای داخلی تابع main مثل بقیه‌ی متغیرها عمل می‌کنه و تفاوتی نداره. در مورد تعریف خود تابع main امضای این تابع تنها به چند شکل استاندارد می‌تونه موجود باشه و نمی‌شه هر آرگومانی رو بهش داد.

۲- در این مورد مثل همه‌ی توابع دیگه عمل می‌کنه.

۳- روش پیاده‌سازی توابع در زبان ماشین یکی هست. البته جزئیاتش به کامپایلر بستگی داره. فرق تابع main با بقیه این هست که کامپایلر برای تولید کد اجرایی اولین جایی که شروع می‌کنه ابتدای تابع main هست و ممکنه به صورت یک تابع در زبان ماشین پیاده نشه بلکه شروع این تابع شروع بلاک کد در فایل اجرایی باشه بدون این که تابعی تعریف شده باشه.
(در صورتی که بررسی کنین کامپایل کردن کدها برای داس، همین کار و می‌کنه و محتویات داخل main مستقیماً داخل بلاک کد فایل اجرایی قرار می‌گیره. در صورتی که در فایل اجرایی exe تولید شده برای سیستم عامل ویندوز، این طور نیست و تابع main ای که شما می‌نویسین به صورت یک تابع جداگانه کامپایل می‌شه و در ابتدای برنامه اشاره‌گر اجرای دستور به اون تابع ارسال می‌شه.

۴- بستگی به قسمت ۳ داره که در صورتی که به صورت تابع پیاده نشه، فراخوانی معنایی نداره یا حداکثر فراخوانی به معنی تغییر مکان مورد اشاره‌ی اشاره‌گر اجرایی به ابتدای بلاک کد هست. در صورتی که به صورت یه تابع پیاده شده باشه می‌شه در مورد فراخوانی هم حرف زد
(به طور کلی فراخوانی در زبان ماشین چیزی شبیه به تغییر آدرس اشاره‌گر اجرایی ماشین هست. با یه سری کارهای اولیه مثل مقداردهی اولیه متغیرها و ذخیره‌ی مکان فعلی اشاره‌گر روی پشته و ...

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۱۹ تیر ۱۳۹۲ توسط prodo