با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در این جلسه از آموزش های دوره فرترن ، اشاره گرها در فرترن را آموزش خواهیم داد.در بیشتر زبان های برنامه نویسی، یک متغیر اشاره گر آدرس حافظه یک شی را ذخیره می کند. با این حال، در فرترن، یک اشاره گر یک شی داده است که دارای ویژگی های بیشتری از ذخیره کردن آدرس حافظه است. اعلام متغیر اشاره گر در فرترن نیز از جمله مواردی است که به آن اشاره می شود. این شامل اطلاعات بیشتر در مورد یک شی خاص، مانند نوع، رتبه، دامنه، و آدرس حافظه است.یک اشاره گر به تخصیص یا اشاره گر اشاره دارد.
یک متغیر اشاره گر با ویژگی اشاره گر اعلام شده است.مثال های زیر اعلام متغیر اشاره گر را نشان می دهد :
1 2 3 | integer, pointer :: p1 ! pointer to integer real, pointer, dimension (:) :: pra ! pointer to 1-dim real array real, pointer, dimension (:,:) :: pra2 ! pointer to 2-dim real array |
اشاره گر می تواند اشاره کند به :
منطقه ای از حافظه اختصاص داده شده به صورت پویا
یک شی داده از همان نوع اشاره گر، با ویژگی هدف.
بیانیه تخصیص به شما اجازه می دهد فضای یک شیء اشاره گر را اختصاص دهید. برای مثال :
1 2 3 4 5 6 7 8 9 10 11 12 13 | program pointerExample implicit none integer, pointer :: p1 allocate(p1) p1 = 1 Print *, p1 p1 = p1 + 4 Print *, p1 end program pointerExample |
هنگامی که کد بالا را کامپایل و اجرا کنید خروجی زیرا مشاهده می کنید :
1 2 | 1 5 |
شما باید فضای ذخیره سازی شده اختصاص داده شده را با دستور deallocate خالی کنید، زمانی که دیگر لازم نباشد شما باید از تجمع فضای حافظه استفاده نشده و غیر قابل استفاده جلوگیری کنید.
هدف یک متغیر عادی دیگر است، با فضای کنار گذاشته شده برای آن. متغیر هدف باید با مشخصه هدف اعلام شود.
شما یک متغیر اشاره گر را با متغیر هدف با استفاده از عملگر ارتباطی (<=) مرتبط می کنید.اجازه دهید مثال قبلی را بازنویسی کنیم تا مفهوم را نشان دهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | program pointerExample implicit none integer, pointer :: p1 integer, target :: t1 p1=>t1 p1 = 1 Print *, p1 Print *, t1 p1 = p1 + 4 Print *, p1 Print *, t1 t1 = 8 Print *, p1 Print *, t1 end program pointerExample |
هنگامی که کد بالا را کامپایل و اجرا کنید خروجی زیرا مشاهده می کنید :
1 2 3 4 5 | 1 5 5 8 8 |
نامشخص
مرتبط
نامرتبط باشد.
در برنامه بالا ما اشاره گر وابسته p1، با هدف t1، با استفاده از عملگر => مرتبط کرده ایم. این تابع مرتبط است، وضعیت ارتباط لینک اشاره گر را بررسی می کند.
بیانیه ی nullify یک اشاره گر را از یک هدف جدا می کند.
Nullify اهداف را خالی نمی کند زیرا ممکن است بیش از یک اشاره گر به یک هدف مشابه وجود داشته باشد.
با این حال، تخلیه اشاره گر نیز نتیجه را لغو می کند.
مثال زیر مفاهیم را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | program pointerExample implicit none integer, pointer :: p1 integer, target :: t1 integer, target :: t2 p1=>t1 p1 = 1 Print *, p1 Print *, t1 p1 = p1 + 4 Print *, p1 Print *, t1 t1 = 8 Print *, p1 Print *, t1 nullify(p1) Print *, t1 p1=>t2 Print *, associated(p1) Print*, associated(p1, t1) Print*, associated(p1, t2) !what is the value of p1 at present Print *, p1 Print *, t2 p1 = 10 Print *, p1 Print *, t2 end program pointerExample |
آموزش اعلام متغیر اشاره گر در فرترن و مبحث اشاره گرها در فرترن به پایان رسید.به طور کلی متغیرهایی از نوع اشاره گر (Pointer)، به متغیرهایی گفته می شود که محتوای آنها، آدرس خانه ها از حافظه است. در عمل، اشاره گر متغیری است که به متغیر دیگری اشاره می کند. امیدوارم از مطالب بهره کافی را برده باشید.