PDA

View Full Version : سوال: تفاوت تابع اصلی int main و void main ...؟



mohsen_bu
شنبه 30 دی 1391, 10:42 صبح
با سلام و احترام.
اینجانب بسیار تازه کارم و تازه با زبان های برنامه نویسی آشنا شوم و در تلاشم تا بر اساس اصول اون رو یاد بگیرم و بکار ببندم.

بعد از دیدن تند قطعه کد به زبان سی چند سوال برایم پیش آمد.
این که در بعضی از برنامه ها که تابع اصلی شروع میشد ، یا این دوحالت بودند:

حالت اول:

int main() {
// some code
}


حالت دوم:

void main() {
// some code
}


این دو حالت چه تفاوتی با هم دارند...؟

سوال بعضی این که در یعضی از برنامه مشاهده نمودم int main به این صورت نوشته شده بود:

int main( int argc, char ** argv ) {
// some code
}

مقداری که در () نوشته شده چکار می کنه.

با سپاس

sr2m72
شنبه 30 دی 1391, 11:47 صبح
با سلام و احترام.
اینجانب بسیار تازه کارم و تازه با زبان های برنامه نویسی آشنا شوم و در تلاشم تا بر اساس اصول اون رو یاد بگیرم و بکار ببندم.

بعد از دیدن تند قطعه کد به زبان سی چند سوال برایم پیش آمد.
این که در بعضی از برنامه ها که تابع اصلی شروع میشد ، یا این دوحالت بودند:

حالت اول:

int main() {
// some code
}


حالت دوم:

void main() {
// some code
}


این دو حالت چه تفاوتی با هم دارند...؟

سوال بعضی این که در یعضی از برنامه مشاهده نمودم int main به این صورت نوشته شده بود:

int main( int argc, char ** argv ) {
// some code
}

مقداری که در () نوشته شده چکار می کنه.

با سپاس

سلام دوست عزيز.
درواقع اون int و void نوع تابع هستند.
كه void به معني پوچ هست. يعني اگر تابعي از نوع void تعريف شود نميتواند مقداري را برگرداند.
و int نوع عدد صحيح ايت. يعني تابعي كه از نوع int تعريف شده باشد بايد يه مقدار صحيح را برگرداند.
اينها فقط مربوط به تابع main نيستند و در تعريف توابع هم بايد به اين صورت تعريف شوند.

در كد سوم كد هايي كه درون () مي بينيد آرگومان هاي تابع هستند. يعني مي تونيد با اين آرگومان ها مقداري را به تابع ارسال كنيد.

موفق باشيد!!

Felony
شنبه 30 دی 1391, 12:45 عصر
تابع main همیشه باید یک عدد صحیح برگردونه ، این عدد بیان کننده این هست که برنامه درست اجرا شده و به پایان رسیده یا نه ، اگر عدد بازگشتی 0 باشه سیستم عامل میفهمه که اجرای برنامه بدون مشکل تموم شده ولی اگر عددی غیر از 0 باشه یعنی مشکلی در برنامه رخ داده بوده ، این مقدار بازگشتی اصولا در آخر برنامه ها با return 0 تعیین میشه ، اگر این خط رو پاک کنید باز هم مشکلی در اجرا به وجود نمیاد چون کامپایلر ++C به صورت خودکار در زمان کامپایل این مقدار بازگشتی ( return 0 ) رو به فایل اجرایی نهایی اضافه میکنه .

در ++C استاندارد شما قادر نیستند مقدار بازگشتی تابع main برنامه رو void در نظر بگیرید ، اون void در بعضی کامپایلرهای خاص قابل قبول هست که تعدادشون خیلی خیلی کمه و کلا از لحاظ فنی مورد قبول نیست ، شما همیشه نوع بازگشتی تابع اصلی برنامت رو int در نظر بگیر .

mohsen_bu
شنبه 30 دی 1391, 21:19 عصر
در كد سوم كد هايي كه درون () مي بينيد آرگومان هاي تابع هستند. يعني مي تونيد با اين آرگومان ها مقداري را به تابع ارسال كنيد.
موفق باشيد!!

با تشکر از دوستان گرامی.
لطفا در مورد این بالایی که گفتین کمی بیشتر توضیح دهید.
و این مقادیری که من گذاشتم رو توضیح بدین لطفا.

با سپاس

Felony
یک شنبه 01 بهمن 1391, 06:39 صبح
اول در مورد Commnad Line تحقیق کنید تا بفهمید اون ها به چه دردی میخورن ، بعد هم لینک زیر رو مطالعه کنید تا از نحوه استفاده از این آرگومان ها مطلع بشید .

http://stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean