آرایه ای از اشاره گرها در زبان C++
قبل از این که مبحث آرایه ای از اشاره گرها را شروع کنیم به مثال زیر که یک آرایه سه عنصری از نوع int دارد، توجه کنید:
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++) { cout << "Value of var[" << i << "] = "; cout << var[i] << endl; } return 0; } |
زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 | Value of var[0] = 10 Value of var[1] = 100 Value of var[2] = 200 |
ممکن است در برنامه نویسی وضعیتی پیش آید که بخواهیم، آرایه ای ایجاد کنیم بتواند اشاره گرها را در خود نگه دارد. در مواقع می توان به صورت زیر عمل کرد:
1 | int *ptr[MAX]; |
دستور بالا آرایه ای به طول MAX برای نگه داری اشاره گرها ایجاد می کند. این شکل از آرایه به جای آن که مقادیر را در خود ذخیره کند، آدرس آن مقادیر را ذخیره می کند. مثال زیر نحوه تعریف و استفاده از یک آرایه ای از اشاره گرها را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; int *ptr[MAX]; for (int i = 0; i < MAX; i++) { ptr[i] = &var[i]; // assign the address of integer. } for (int i = 0; i < MAX; i++) { cout << "Value of var[" << i << "] = "; cout << *ptr[i] << endl; } return 0; } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 | Value of var[0] = 10 Value of var[1] = 100 Value of var[2] = 200 |
شما همچننی می توانید یک آرایه از اشاره گرهایی از نوع کاراکتر برای ذخیره سازی رشته ها ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> using namespace std; const int MAX = 4; int main () { const char *names[MAX] = { "Zara Ali", "Hina Ali", "Nuha Ali", "Sara Ali" }; for (int i = 0; i < MAX; i++) { cout << "Value of names[" << i << "] = "; cout << (names + i) << endl; } return 0; } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 4 | Value of names[0] = Zara Ali Value of names[1] = Hina Ali Value of names[2] = Nuha Ali Value of names[3] = Sara Ali |
هیچ نظری ثبت نشده است