اشاره گرها و آرایه ها در زبان C++
اشاره گرها و آرایه ها از جهات مختلفی بسیار شبیه به هم هستند و در بسیاری از مواقع این دو قابل تعویض هستند. برای یک اشاره گر که به ابتدای یک آرایه اشاره می کند، می تواند با افزایش یافتن به سایر عناصر آرایه دسترسی داشته باشد. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; int *ptr; // let us have array address in pointer. ptr = var; for (int i = 0; i < MAX; i++) { cout << "Address of var[" << i << "] = "; cout << ptr << endl; cout << "Value of var[" << i << "] = "; cout << *ptr << endl; // point to the next location ptr++; } return 0; } |
زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 4 5 6 | Address of var[0] = 0xbfa088b0 Value of var[0] = 10 Address of var[1] = 0xbfa088b4 Value of var[1] = 100 Address of var[2] = 0xbfa088b8 Value of var[2] = 200 |
با این حال گاهی اوقات اشاره گرها و آرایه ها را نمی توان به طور کامل با یک دیگر تعویض کرد. مثال زیر را در نظر بگیرید:
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; for (int i = 0; i < MAX; i++) { *var = i; // This is a correct syntax var++; // This is incorrect. } return 0; } |
در کد بالا امکان تغییر مقدار عناصر آرایه وجود دارد، اما نمی توان آدرس خانه های آرایه را تغییر داد. زیرا متغیر var یک اشاره گر ثابت است و ثوابت بعد از تعریف شدن قابل تغییر نیستند.
دستور زیر برای دسترسی به عناصر یک آرایه به وسیله اشاره گر استفاده می شود:
1 | *(var + 2) = 500; |
دستور بالا معتبر است و کامپایل می شود. این دستور مقدار عنصر سوم را برابر با 500 قرار می دهد.
هیچ نظری ثبت نشده است