زمان کنونی: ۲۵ آبان ۱۴۰۳, ۰۴:۱۰ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

روش های فراخوانی توابع by name/value/ref

ارسال:
  

csharpisatechnology پرسیده:

روش های فراخوانی توابع by name/value/ref

اینم یک PDF در این زمینه :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

اگه لینک خراب بود به این لینک مراجعه کنید:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

csharpisatechnology پاسخ داده:

انواع ارسال پارامتر به توابع

[تصویر:  146205_1_1379087641.gif]

ALGOL ، فراخوانی با نام(NAME)
==
FORTRAN ،با ارجاع (REF)
==
C ، با مقدار (Val)
==
در CPP و PASCAL فراخوانی با ByVal+ByRef
==
در CPP اگر قبل از نام پارامتر & بگذاریم ، فراخوانی با آدرس(ارجاع) انجام می شود.
==
در الگول_w فراخوانی با مقدار_نتیجه معرفی شده است.
==
منبع :جزوه ی قبایی
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

blackhalo1989 پاسخ داده:

روش های فراخوانی توابع by name/value/ref

در عمل اینطور نیست Big Grin
در زبان C شما نمیتونید با &, call by ref کنید چون اصلا این کاربرد & که به عنوان ref به یه متغیر هست تو C++ اضافه شد. وقتی ما از & در توابع استفاده می کنیم، عملا داریم از این ویژگی که مربوط به C++ (و نه C) هست استفاده می کنیم.
اینکه شما میگید تو عمل فرقی نداره چون ما از کامپایلر های C++ استفاده می کنیم که تمامی C رو هم ساپورت میکنن.
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

a.hooshmand پاسخ داده:

روش های فراخوانی توابع by name/value/ref

تا جایی که من میدانم در عمل c و cpp مثل هم هستند!
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

a.hooshmand پاسخ داده:

روش های فراخوانی توابع by name/value/ref

پس تابع scanf زبان c چگونه کار می کند؟
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

blackhalo1989 پاسخ داده:

روش های فراخوانی توابع by name/value/ref

& برای آدرس تو C بوده ولی شما این گد رو در نظر بگیرید:
int x;
int& foo = x;
foo = 56;

این کاربرد برای & تو سی++ اضافه شد. شما وقتی دارید یه تابع رو call by ref میکنید دارید از این کاربرد & استفاده می کنید. شما تو تعریف تابع int& foo رو مینویسید و تو صدا زدن عملا دارید = x رو مینویسید. اینه که هر دو متغیر به یه مکان از حافظه اشاره میکنن.
به اینجا یه نگاهی بندازید:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

a.hooshmand پاسخ داده:

روش های فراخوانی توابع by name/value/ref

فکر کنم اینجا موضوع بحث در مورد فراخوانی هایی توابع هست.

البته با اشاره گر ها و یونین ها هم می توان چنین چیزی در زبان C پیاده ساری کرد

به خط های اول نوشته دقت کن....
C++ references allow you to create a second name for the a variable that you can use to read or modify the original data stored in that variable. While this may not sound appealing at first,
خوب این بیشتر برای دسترسی به یک متغییر با ۲ نام هست و به قول نویسنده اول کاربردی به نظر نمی آید و ....

فکر نمی کنم به موضوع تایپیک هم این رابطه داشته باشد.
به جز اینکه چون عنوانش C++ References هست ممکن است در لحظه اول اشتباه شود که در مورد موضوع تایپیک کار برد دارد!!!!
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

zibaziba پاسخ داده:

روش های فراخوانی توابع by name/value/ref

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

۰
ارسال:
  

csharpisatechnology پاسخ داده:

روش های فراخوانی توابع by name/value/ref

احساس نکنید اثبات کنیدBig Grin
نقل قول این ارسال در یک پاسخ

ارسال: #۱۰
  

csharpisatechnology پاسخ داده:

فراخوانی با نام _ call by name

مثالی از فراخوانی با نام/اسم (call by name)
نکته : این روش همان روش فراخوانی با ارجاع(آدرس)(by reference) است. در فراخوانی با ارجاع(آدرس)،مقدار پارامتر ها از داخل تابع دستکاری نمی شوند ولی در فراخوانی با نام ابتدا نام پارامترهای ورودی به جای متغیرهای تابع جایگزین شده و سپس مقداردهی و دستکاری می شوند.
=
تست :
در زبان فرضی زیر اگر فراخوانی با نام (call by name) باشد خروجی را بیابید
=
تست :
در زبان فرضی زیر اگر فراخوانی با نام (call by name) باشد خروجی را بیابید.
void function Exchange(x,y:integer);
BEGIN
temp=x
x=y
y=temp
END;
i=4;A[1]=8;A[2]=6;A[3]=4;A[4]=2;
Exchange(i,A[i]);
print(i,A[i],A[2],A[3],A[4]);
خروجی از چپ به راست:
۲,۸,۴,۴,۲

[تصویر:  146252_1_1379087641.gif]
==

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

==
منبع :
گسترش علوم پایه
مقسمی
طراحی و پیاده سازی زبان های برنامه سازی(چاپ مهر ۸۷)(ص۹۳)
==
ویرایش : ۶۸ تا بازدید داریم حتی یه تشکر هم نزدین.خیلی با انصافینSad


فایل‌(های) پیوست شده
callByName.zip
اندازه فایل: ۲۴/۲۲ KB
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  جایی برای پیدا کردن توابع آماده جاوااسکریپت f.b ۷ ۴,۵۴۸ ۲۰ آذر ۱۳۹۹ ۰۴:۰۸ ب.ظ
آخرین ارسال: calm
  تعداد روش های نوشتن عدد n ss311 ۲ ۳,۳۳۵ ۱۳ بهمن ۱۳۹۸ ۰۵:۲۷ ب.ظ
آخرین ارسال: ss311
  تعداد توابع پوشا ss311 ۰ ۲,۰۷۰ ۰۶ بهمن ۱۳۹۸ ۰۴:۵۷ ب.ظ
آخرین ارسال: ss311
  مشاوره روش تحقیق و تحلیل آماری sirvan.t ۰ ۲,۱۶۴ ۱۷ آذر ۱۳۹۸ ۱۲:۵۹ ق.ظ
آخرین ارسال: sirvan.t
  روش برنامه نویسی پویا برای حل فروشنده دوره گرد Mohammad WR10 ۶ ۱۰,۹۱۲ ۱۶ خرداد ۱۳۹۸ ۰۶:۳۲ ب.ظ
آخرین ارسال: Shadik
  روش به طرح درخت پیش ترتیب با آرایش داده شده porseshgar ۶ ۶,۸۰۲ ۱۴ بهمن ۱۳۹۷ ۰۸:۴۰ ب.ظ
آخرین ارسال: porseshgar
  روش اپلای کردن فایل patch به برنامه ای در لینوکس hanie_M ۱ ۲,۵۰۴ ۲۳ دى ۱۳۹۷ ۰۴:۰۶ ق.ظ
آخرین ارسال: one hacker alone
Question مشکل با درک توابع دنباله دار و مولد ؟؟؟؟ radar ۰ ۲,۶۹۸ ۱۶ دى ۱۳۹۷ ۰۴:۳۶ ب.ظ
آخرین ارسال: radar
  روش های تولید محتوا برای سایت melinaa ۰ ۲,۱۳۳ ۰۴ شهریور ۱۳۹۷ ۱۰:۳۵ ق.ظ
آخرین ارسال: melinaa
  بهترین زمان برای حل کوله پشتی به روش پویا Mr.R3ZA ۰ ۲,۱۶۷ ۱۲ خرداد ۱۳۹۷ ۰۲:۰۶ ق.ظ
آخرین ارسال: Mr.R3ZA

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close