آرایه ها
وقتی نیاز به چندین متغیر با یک نوع و مرتبط به یک موضوع دارید، از آرایه استفاده کنید. یک آرایه فقط مجموعه ای از متغیرهای همنوع است، مثلاً آرایه ای از int ها:
;[int iarray[5 یک آرایه با ظرفیت 5 عدد صحیح با نام iarray ادعا میکند. مثلاً میتوانید نمره های 5 دانش آموز را بجای نگهداری در پنج متغیر جداگانه، در عناصر این آرایه نگهدارید. برای مقدار دهی به یک عنصر آرایه: ;23 = [iarray[0 به عنصر اول آرایه مقدار 23 رامیدهد. همچنین برای دسترسی به مقدار عنصر اول از [iarray[0 استفاده کنید. اندیس(عدد درون کروشه ها) عناصر آرایه از صفر شروع میشود تا یکی کمتر از تعداد عناصر آرایه، پس آخرین عنصر با [iarray[4 در دسترس قرار میگیرد. آرایه iarray فقط یک بعد دارد، اما میتوان آرایه هایی با ابعاد بیشتر هم داشت. اگر آرایه یک بعدی را مجموعه ای از جعبه ها در نظر بگیرید، آرایه دو بعدی میشود جعبه هایی که درون آنها جعبه های دیگری وجود دارد. یک آرایه دو بعدی: ;[4][int iarray2[3 یک آرایه را تعریف میکند که بعد اول آن اندازه 3 و بعد دوم آن اندازه 2 دارد. یعنی 3 جعبه که در هر کدام 2 جعبه دیگر قرار دارد.
آرایه سه بعدی ;[2][5][int iarray3[4 اندازه بعد سوم آن 2 است.
میتوان گفت، آرایه یک بعدی مجموعه ای از متغیرهای ساده، آرایه دو بعدی مجموعه ای از آرایه های یک بعدی، آرایه سه بعدی مجموعه ای از آرایه های دوبعدی است. آرایه های با اندیس های بالاتر بندرت استفاده میشوند.
مقداردهی اولیه به آرایه ها
برای آرایه یک بعدی: ;{1,2** = [int ar[2 به عنصر اول مقدار 1 و به دوم 2 میدهد. برای آرایه دو بعدی: ;**{3,4**,{1,2**** = [2][int ar[2 ، آکولاد بازوبسته درونی اول برای سطر اول و دومی برای سطر دوم است (البته آکولادهای درونی اختیاری هستند، اما برای خوانایی بیشتر بهتر است بگذارید) یعنی {1,2** به سطر اول مقدار میدهد، طوریکه به ستون اول مقدار 1 و به ستون دوم مقدار 2 میدهد.
برای آرایه سه بعدی: ;** **{7,8**,{5,6**** , **{3,4**,{1,2**** ** = [2][2][int ar[2 قسمت **{3,4**,{1,2**** به سطر اول مقدارمیدهد، طوریکه {1,2** به ستون اول آن مقدار میدهد، طوریکه 1 برای عمق اول آن و 2 برای عمق دوم قرار میگیرد. مثلاً [ar[1][0][1 مقدار 6 را میدهد، چراکه در سطر دوم(**{7,8**,{5,6****) در ستون اول({5,6**) مقدار عمق دوم را برمیگرداند. اگر عمق اول را مشخص کرده بودیم([ar[1][0][0) پنج میداد، یا اگر سطر اول را مشخص کرده بودیم ([ar[0][0][1) دو میداد. البته مقدار اولیه دهی به آرایه های سه بعدی کمتر پیش می آید.
اگر در مقدار دهی اولیه آرایه، به یک عنصر از آن مقدار ندهید کامپایلر به آن مقدار صفر میدهد، مثلاً در ;**{1,2**** = [2][int ar[2 هر دو ستون سطر دوم مقدار صفر میگیرند. اگر میخواهید به تمام مقادیر آرایه مقدار صفر دهید، آرایه را هنگام تعریف برابر **** قرار دهید، مثلاً بنویسید : ;**** = [2][2][int ar[2
نکته: مقداردهی اولیه آرایه فقط در هنگام تعریف آرایه امکان پذیر است.
نکته: در مقدار دهی اولیه به یک آرایه میتوانید اندازه بعد اول را مشخص نکنید و کامپایلر خود با توجه به تعداد مقادیر اولیه ای که فراهم آورده اید اندازه آنرا تعیین میکند. اما اندازه سایر ابعاد را همیشه باید مشخص کنید. مثلاً: ;**{int ar[][2] = **{1,2**,{3,4
تعیین تعداد عناصر یک آرایه
اگر مثلاً [int ar[2][3 را داشته باشیم، عبارت (sizeof(ar مقدار 24 را میدهد که اندازه کل آرایه است، چراکه 2x3 یا 6 تا عنصر از نوع int دارد، و چون هر int چهار بایت میگیرد، پس 6x4 یا 24 بایت کل آرایه میگیرد. پس ما اندازه کل آرایه را داریم و اندازه هر عنصر میشود (sizeof(int چراکه نوع هر عنصر int است، در نهایت (sizeof(ar) / sizeof(int اندازه کل آرایه را به اندازه هر عنصر آن تقسیم میکند و تعداد عناصر آرایه را میدهد (/ عمل تقسیم را انجام میدهد).
مثالی برای استفاده از آرایه ها
کد قالب بندی شده:
خروجیکد:#include <iostream> using namespace std; int main() ** int ar[2][3] = {1**; cout << "Enter a number : "; cin >> ar[1][2]; cout << "Your number is : " << ar[1][2] << endl; cout << "\n\nElement in first row and first column of the array is : " << ar[0][0] << "\nand for the second column : " << ar[0][1]; cout << "\n\nNumber of elements in the array is : " << sizeof(ar) / sizeof(int) << endl; system("pause"); return 0; **
تحلیل
برنامه ابتدا عددی را از کاربر در عنصر[2] [1] از آرایه ar میگیرد (یعنی در عنصر سطر دوم-ستون سوم از آرایه مقدار دریافتی از کاربر قرار میگیرد)، سپس آنرا چاپ میکند. سپس عناصر [0][0] و [1][0] را نمایش میدهد که اولی مقدار 1 دارد چون مقداردهی اولیه شده، و دومی مقدار 0 چون مقداردهی اولیه نشده. در آخر نیز تعداد عناصر آرایه نمایش داده میشود.
__________________
علاقه مندی ها (Bookmarks)