اشاره گرها در زبان C++
اشاره گرها یکی از مباحث آسان و سرگرم کننده زبان برنامه نویسی C++ برای یادگیری هستند. با استفاده از اشاره گرها انجام برخی از کارها بسیار راحتر می شود. همچنین انجام برخی از کارها نظیر تخصیص حافظه پویا بدون استفاده از اشاره گرها امکان پذیر نیست. بنابراین یادگیری این مبحث برای تبدیل شدن به یک برنامه نویسی حرفه ای لازم است.
همانطور که می دانید، هر متغیر یک مکان در حافظه است و هر مکان در حافظه دارای آدرسی است که با استفاده از عملگر & می توان به آن آدرس دسترسی داشت. مثال زیر را در نظر بگیرید که آدرس متغیرها را چاپ می کند:
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> using namespace std; int main () { int var1; char var2[10]; cout << "Address of var1 variable: "; cout << &var1 << endl; cout << "Address of var2 variable: "; cout << &var2 << endl; return 0; } |
زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 | Address of var1 variable: 0xbfebd5c0 Address of var2 variable: 0xbfebd5b6 |
اشاره گر چیست؟
اشاره گر متغیری است که آدرس متغیر دیگر را در خود ذخیره می کند. منظور از آدرس، محلی از حافظه است که متغیر در آن قرار دارد. مانند سایر متغیرها یا ثابت ها اشاره گرها هم باید قبل از استفاده تعریف شوند. شکل کلی تعریف یک اشاره گر به صورت زیر است:
1 | type *var-name; |
در اینجا، type نوع اشاره گر است و باید یکی انواع داده معتبر در زبان C++ باشد. نام گذاری اشاره گرها از قوانین نام گذاری متغیر پیروی می کند. علامت * همان علامتی است که برای ضرب استفاده می شود اما در اینجا برای تعریف یک اشاره گر استفاده شده است.
چند نمونه از اعلان های معتبر اشاره گر در زبان C++:
1 2 3 4 | int *ip; // pointer to an integer double *dp; // pointer to a double float *fp; // pointer to a float char *ch // pointer to character |
نحوه استفاده از اشاره گرها
چند عملیات مهم وجود دارد که اغلب با استفاده از اشاره گرها انجام می دهیم. (الف) ما یک متغیر اشاره گر را تعریف می کنیم، (ب) آدرس متغیر را به یک اشاره گر اختصاص دهیم و (پ) در نهایت به مقداری که در آدرس موجود در اشاره گر قرار دارد، دسترسی پیدا کنیم. این کار با استفاده از عملگر * انجام می شود که مقداری که در آدرس حافظه قرار دارد را برمیگرداند.
مثال زیر نحوه استفاده از اشاره گرها را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> using namespace std; int main () { int var = 20; // actual variable declaration. int *ip; // pointer variable ip = &var; // store address of var in pointer variable cout << "Value of var variable: "; cout << var << endl; // print the address stored in ip pointer variable cout << "Address stored in ip variable: "; cout << ip << endl; // access the value at the address available in pointer cout << "Value of *ip variable: "; cout << *ip << endl; return 0; } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 | Value of var variable: 20 Address stored in ip variable: 0xbfc601ac Value of *ip variable: 20 |
جزئیات بیشتر در مورد اشاره گرها
مبحث اشاره گرها بسیار بزرگ است اما هر برنامه نویس باید به خوبی با آن آشنا باشد تا بتواند نیاز های خود را برطرف کند. در جدول زیر چند شکل دیگر استفاده از اشاره گرها در زبان C++ را مشاهده می کنید:
ردیف | مفهوم و توضیحات |
1 | اشاره گر null زبان C++ از اشاره گر null پشتیبانی می کند. این اشاره گر یک ثابت است که در چندین کتابخانه زبان C++ با مقدار صفر تعریف شده است. |
2 | اعمال ریاضی بر روی اشاره گرها چهار عملگر ریاضی وجود دارد که می توان در هنگام استفاده از اشاره گرها از آن ها استفاده کرد: ++، -، +، – |
3 | اشاره گرها و آرایه ها بین اشاره گرها و آرایه ها رابطه نزدیکی وجود دارد. |
4 | آرایه ای از اشاره گرها شما می توانید آرایه ای تعریف کنید که مجموعه ای اشاره گرها را در خود نگه داری کند. |
5 | اشاره گر به اشاره گر در زبان C++ می توانید اشاره گری تعریف کنید که به یک اشاره گر دیگر اشاره کند. |
6 | ارسال اشاره گر با تابع در زبان برنامه نویسی C++ شما می توانید یک اشاره گر را به عنوان آرگومان به یک تابع ارسال کنید. |
7 | بازگشت اشاره گر از تابع زبان C++ به توابع اجازه می دهد تا یک اشاره گر به متغیر محلی، متغیر استاتیک و حافظه اختصاص داده شده به صورت پویا را به عنوان خروجی تابع، بازگشت داده شود. |
هیچ نظری ثبت نشده است