اشارهگرها در پاسکال شیگرا

اشارهگرها در پاسکال شیگرا
اشارهگرها در زبان پاسکال شیگرا از کاربرد بالایی برخوردارند
اشارهگر به متغییری گفته میشود که شامل ادرس متغییر دیگری باشد
همان طور که میدانید حافظه اصلی کامپیوتر Ram همانند منازل یک شهر دارای ادرس های گوناگوی است
و هر متغییری که شما استفاده میکنید
در ادرس مشخصی از حافظه مقدار خود را نگهداری خواهد کرد
برای مثال به برنامه زیر توجه کنید
Var A : Char; B : Byte; begin A := 'M'; B : = 125; end;
در این برنامه متغییر B به ادرس مشخصی از حافظه مثلا 1801 اشاره خواهد داشت و مقدار متغییر B در ان ادرس از حافظه نگهداری خواهد شد
لذا به طور خلاصه این که هر متغییری به آدرس مشخصی از حافظه اشاره خواهد داشت و ما برای درک بهتر اسامی متغییرها استفاده می کنیم
نکــــــــــته |
---|
بهتر است در صورت امکان از شاره گره ا استفاده نکنید زیرا در محیط NET. به عنوان یک نوع داده ای Unsafe (نا امن یا خطرناک ) شناخته میشوند توجه داشته باشید که مثال های این بخش در حالت عادی درمحیط Net. قابل اجرا نخواهند بود اما در برنامه های از نوع win32 قابل اجرا هستند بهتر است فقط به مفاهیم این بخش توجه داشته باشید زیرا با مطالعه پست های اینده متوجه خواهید شد که نیازی به نوشتن چنین کدهایی نخواهید داشت |
برای به دست اوردن متغییرها می توانید از عملگر @ استفاده کنید
برای مثال به برنامه زیر از عملگر @ برای به دست اوردن ادرس متغییر B استفاده شده است
Var A : Char; B : Byte; P : Pointer; begin A =: 'M'; B := 125; P := @B; end.
همان طور که مشاهده میکنید در برنامه فوق ادرس متغییر B درون اشاره گر P قرار داده شده است
لذا در صورتی که مقدار متغییر B در ادرس 1801 حافظه ذخیره شده باشد
متغییر P داراری مقدار 1801 خواهد بود
به این نوع اشارهگر : اشارهگر بدون نوع یا Untyped pointer گفته میشود
به این دلیل که این نوع اشارهگرها شامل آدرسی از حافظه خواهند بود
توجه داشته باشید که برنامه فوق برای اجرا در محیط net. نیاز به تغییراتی به صورت زیر دارد
{UnsafeCode'On$} procedure Test ; unsafe; Var A : Char; B : Byte; P : Pointer; begin A =: 'M'; B := 125; P := @B; end; begin test; end.
نوع دیگری از شارهگر وجود دارد که به آن اشارهگر نوع دار یا Type pointer گفته میشود
اشارهگر نوع دار به اشارهگری گفته میشود که به نوع داده ای مشخصی اشاره داشته باشد
برای مثال به برنامه زیرتوجه کنید
type PStudent : ^TStudent; TStudent = record Name : stering[20]; Family : stering[30]; end;
در تعریف فوق PStudent اشاره گری به TSudent است
حتما تعجب کرده اید و می پرسید که چنین اشاره گری چه کاربردی دارد ؟!
در پست ها بعدی متوجه کاربردی این نوع از اشارهگرا خواهید شد