ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |
در ابتدا می بایست تعریف صحیحی از نوع شمارشی enum ارائه داد و در ادامه به نحوه استفاده از آن پرداخت. برای توضیح این موضوع از یک مثال استفاده می کنیم. فرض کنید می خواهید یک برنامه حسابداری بنویسید که در آن حقوق نظافت چی 3 واحد پول، حقوق منشی 5 واحد پول، حقوق کارمندان 6 واحد پول و حقوق کارشناسان 8 واحد پول باشد و در ادامه قصد دارید تا جمع پرداختی را محاسبه کنید...
راه اول بدون استفاده از enum)
در این روش می توانید مقدار حقوق هر فرد را جمع کنید که در این حالت خروجی برابر مقدار پرداختی در سر ماه خواهد بود. ولی در این روش دو مشکل وجود دارد. یکی اینکه اگر تعداد افراد شاغل در شرکت زیاد باشد، باید از یک دفترچه راهنما استفاده کنید تا فراموش نکنید که مثلا حقوق کارمند چند واحد پول بوده است و دیگر اینکه اگر فردی برنامه ی شما را بخواند متوجه نمی شود که 6 واحد پول به چه معناست. برای رفع این مشکلات از نوع شمارشی enum استفاده می کنیم. برای مشاهده جزییات به ادامه توجه کنید.
راه دوم با استفاده از enum)
ساده و صریح بگویم: در واقع در این روش کارمند را به معنای 6 واحد پول در نظر می گیریم و به کامپایلر می گوییم هر کجا نام کارمند را دید به جای آن 6 واحد پول جایگزین کن. به این صورت هم مشکل اول حل می شود (چرا که تنها یک بار حقوق کارمند را مشخص می کنیم و در ادامه تنها از آن استفاده می کنیم) و هم مشکل دوم. (چرا که به جای مقدار حقوق، نام کارمند را قرار می دهیم.)
زبان برنامهنویسی C از دو نوع متغیر پشتیبانی میکند: متغیرهای معمولی و اشارهگرها (متغیرهای حاوی آدرس حافظه). زبان ++C نوع سومی را به این مجموعه اضافه کرده است: متغیرهای مرجع (Reference).
متغیرهای مرجع از روی دو نوع دیگر ساخته میشود و به نوعی میتوان گفت نام مستعار برای متغیر اصلی به حساب میآید. برای تعریف متغیر مرجع از عملگر & استفاده میکنیم:
1 | int a; |
2 | int &b = a; |
عبارت فوق متغیر b را مرجعی برای a معرفی میکند. از این کد به بعد متغیرهای a و b معادل هم هستند. یعنی تغییرات a در b و تغییرات b در aتاثیر میگذارد. در واقع a و b از یک محل حافظه استفاده میکنند؛ یا اینکه یک خانهی حافظه، دو نام متفاوت دارد.
کاربرد اصلی متغیرهای مرجع را میتوان در انتقال اطلاعات به توابع و بالعکس دید. همانطور که میدانید در زبان C دو روش برای انتقال اطلاعات به تابع و بالعکس وجود دارد: مقدار و اشارهگر. زمانی که از روش اول استفاده میکنیم، آرگومان متناظر با پارامتر تابع فقط یک کپی از مقدار آن پارامتر را دارد. یعنی تغییر متغیر آرگومان تاثیری در متغیر پارامتر ندارد.
منبع الگوریتم ها
متغییرهای مرجع در سه جا به درد میخورند
1- هنگامی که داده های برگشتی ما بیشتر از یکی باشد
2- برای تغییر پارامتر اصلی
3- برای ذخیره کمتر حافظ و زمان