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

نام تاپیک: تفاوت ارسال آرگومان از طریق مقدار با ارسال از طریق ارجاع ثابت در زبان های برنامه نویسی

  1. #1

    تفاوت ارسال آرگومان از طریق مقدار با ارسال از طریق ارجاع ثابت در زبان های برنامه نویسی

    درود،
    همه می دونیم که به سه طریق امکان ارسال آرگومان هایمان به توابع وجود دارد:
    1.ارسال از طریق مقدار و مثلا در تابع داریم:
    void Example(int);

    در این حالت یک کپی از اطلاعات ارسال در حافظه به وجود می آید و هیچ تغییری روی آرگومان ما صورت نمیگیرد.
    2.ارسال از طریق ارجاع و مثلا در تابع داریم:
    void Example(int&);

    در این حالت تابع به طور مستقیم با مقدار ارسالی کار میکند و در صورتی که تغییری در مقدار آرگومان صورت گیرد، در خارج از تابع هم اعمال می شود...
    ولی حالت سومی نیز وجود دارد:
    3.ارسال از طریق ارجاع ثابت و مثلا در تابع داریم:
    void Example(const int&);

    در این حالت با اینکه آرگومان ما از طریق ارجاع ارسال میشود ولی پس از اتمام کار تابع هیچ تغییری در مقدار اولیه به وجود نمی آید. (مانند حالت اول)
    حالا با بیان این مقدمات این سؤال مطرح می شود که اگر حالت اول و حالت سوم هیچ تفاوتی از نظر عملکرد با یکدیگر ندارند، پس ما اصلا به چه دلیلی از حالت اول استاده می کنیم؟ با توجه به اینکه حالت سوم فضای کمتری (دقیقا نصف) در حافظه اشغال میکند اصلا چرا حالت اول در زبان های برنامه نویسی گنجانده شده است؟ آیا به غیر از میزان اشغال حافظه، پارامترهای دیگری هم مد نظر هستند که باعث بشوند تا به جای حالت سوم از حالت اول استفاده کنیم؟
    حقیقتا این بحث دیروز در یکی از کلاس های درس توسط من مطرح شد و هیچ یک از اساتید و یا دانشجویان نتوانستند پاسخ دقیقی به این سؤال بدهند و تنها احتمالی که دادیم این بود که در حالت سوم احتمالا فشار بیشتری به پردازنده می آید و زمان بیشتری صرف ارسال و دریافت اطلاعات می شود...
    شما چه فکری می کنید؟
    لطفا اگر منبع خوبی در این رابطه دارید بهم معرفی کنید.
    با تشکر از همگی




  2. #2

    نقل قول: تفاوت ارسال آرگومان از طریق مقدار با ارسال از طریق ارجاع ثابت در زبان های برنامه نویسی

    سلام
    حقیقتش منم منتظرم از دوستان کسی به این سوال جواب بده.
    آخه منم گشتم توی فرومای خارجی بیشتر این بحث شده که فرق بین static const int با const int چیه تا چیزی که دوستمون خواستن.

  3. #3
    کاربر دائمی آواتار shahmohammadi
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    کلیبر
    پست
    475

    نقل قول: تفاوت ارسال آرگومان از طریق مقدار با ارسال از طریق ارجاع ثابت در زبان های برنامه نویسی

    سلام.
    3.ارسال از طریق ارجاع ثابت و مثلا در تابع داریم:

    void Example(const int&);


    در این حالت با اینکه آرگومان ما از طریق ارجاع ارسال میشود ولی پس از اتمام کار تابع هیچ تغییری در مقدار اولیه به وجود نمی آید. (مانند حالت اول)
    در حالت سوم كدي مانند زير نادرسته چون شما اصلا حق تغيير مقدارشو نداريد.
    مثلا كد زير نادرسته:
    void Example(const int&a)
    {
    a=100;
    }

    خوب حالا همون طور كه مي‌بينيد روش اول هيچ شباهتي به روش سوم نداره.

  4. #4

    نقل قول: تفاوت ارسال آرگومان از طریق مقدار با ارسال از طریق ارجاع ثابت در زبان های برنامه نویسی

    نقل قول نوشته شده توسط shahmohammadi مشاهده تاپیک
    سلام.
    در حالت سوم كدي مانند زير نادرسته چون شما اصلا حق تغيير مقدارشو نداريد.
    مثلا كد زير نادرسته:
    void Example(const int&a)
    {
    a=100;
    }

    خوب حالا همون طور كه مي‌بينيد روش اول هيچ شباهتي به روش سوم نداره.
    بله من هم در یک سری منابع خارجی جستجو کردم و یکی از نتایجی که گرفتم همینی هست که شما فرمودید.
    همچنین موردی دیگری که گفته شده بود این بود که در صورتی که مقدار آگومان ارسالی کمتر از 2 بایت (کمتر از مقدار اشاره گر) هست بهتر است که از طریق مقدار ارسال انجام بگیرد.

تاپیک های مشابه

  1. پاسخ: 7
    آخرین پست: دوشنبه 21 فروردین 1391, 22:50 عصر
  2. سوال: ارسال مقدار به گزارش از طریق پارامتر(فوری)
    نوشته شده توسط pedramfj در بخش ابزارهای گزارش سازی
    پاسخ: 1
    آخرین پست: یک شنبه 04 مهر 1389, 15:02 عصر
  3. ارسال آرگومان به یک صفحه دیگر
    نوشته شده توسط turk_programmer در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: جمعه 25 آذر 1384, 23:34 عصر
  4. ارسال یک سوال جدید در یک انجمن از طریق ایمیل
    نوشته شده توسط Alireza-st در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 0
    آخرین پست: شنبه 05 آذر 1384, 08:14 صبح
  5. ارسال آرایه ها با مقدار و با مراجعه
    نوشته شده توسط mohandess_anita در بخش VB.NET
    پاسخ: 1
    آخرین پست: پنج شنبه 28 مهر 1384, 10:40 صبح

برچسب های این تاپیک

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

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