سلام!

بعد از مدت زیادی آموختن برنامه نویسی شی گرا، حال بیایید به یکی از مباحث اولیّه ی وبلاگ (یعنی اشاره گر ها) رجوع کرده و آن را کامل کنیم.

همان طور که در آن مطلب متوجه شدید، اگر هنگام تعریف متغیر، قبل از اسم آن یک * اضافه کنیم، آنگاه می توانیم در آن آدرس یک متغیر را ذخیره کنیم. حالا به کد زیر دقت کنید؛

int **a;

حالا در این متغیر آدرس یک *int ذخیره شده است. یعنی اگر در برنامه ی خود بنویسید

cout << *a;

خروجی برنامه یک آدرس خواهد بود. این برنامه را می توانید در این جا مشاهده کنید.

کاربرد اصلی این کار در ایجاد آرایه های چند بعدی است که آن را در ادامه آموزش می دهیم.

فرض کنید می خواهید یک آرایه از *int بسازید که ۵ سطر و ۳ ستون داشته باشد. برای این کار ابتدا یک ***int بسازید. سپس آدرس آن را برابر با آدرس خانه ی اوّل یک آرایه در heap قرار دهید به صورت زیر؛

int ***a = new int**[5];

بعد از این کار هم هر کدام از خانه های آرایه ی به دست آمده را برابر با خانه ی اوّل یک آرایه ی دیگر قرار دهید به صورت زیر؛

for (int i = 0; i < 5; i++)

    a[i] = new int*[3];

حالا شما یک آرایه از *int دارید که شامل ۵ سطر و ۳ ستون است.

در آخر به یاد داشته باشید که آرایه را deallocate کنید. برای این کار مانند کد زیر عمل کنید؛

for (int i = 0; i < 3; i++){
    for (int j = 0; j < 5; j++)
        delete a[j][i];
    delete a[i];
}

کد تمامی این مراحل را می توانید در این جا مشاهده کنید.

برای تمرین، می توانید آرایه هایی با اندازه های مختلف و نوع های مختلف ایجاد کنید.

موفق باشید!