بچه ها سلام
می خواستم بپرسم کاربرد پشته و اشاره گر در صنعت نرم افزار چیه؟(مهم)
چرا از پشته استفاده میشود و همینطور از اشاره گر؟
ممنونم با تشکر
سوالی در ارتباط با پشته و اشاره گرها
مدیر انجمن: rosa_127
Re: سوالی در ارتباط با پشته و اشاره گرها
اگه بیشتر توضیح بدید تا بهتر متوجه منظورتون بشمbahoosh نوشته شده:بچه ها سلام
می خواستم بپرسم کاربرد پشته و اشاره گر در صنعت نرم افزار چیه؟(مهم)
چرا از پشته استفاده میشود و همینطور از اشاره گر؟
ممنونم با تشکر
کاربرد پشته و اشاره گر که توی زبان سی بسیار واضح و روشن هست
نبوده
............. نیست
........................ نخواهد بود
از تو عزیزتر
.............کسی برای من...
............. نیست
........................ نخواهد بود
از تو عزیزتر
.............کسی برای من...
Re: سوالی در ارتباط با پشته و اشاره گرها
پشته که خب یه نوع ساختمان داده ست که حتما عملکردش رو می دونید، یه نوع خاصی از صف اولویت هستش که در اون آخرین ورودی، اولین خروجیه.
به عنوان مثال در سیستم عامل ها، بارز ترین کاربردش ترتیب اجرای دستورات در برنامه ها می تونه باشه، مثلا وقتی شما تابعی رو فراخوانی می کنین، آدرس دستورالعمل فعلی در یک پشته گذاشته می شه (با هر بار فراخوانی تابع این کار انجام می شه) بعد از اجرای تابع، مقداری که در بالای پشته قرار داره، آدرس آخرین دستورالعمل متوقف شده به خاطر پرش به تابع است، پس این مقدار برداشته می شه و به عنوان آدرس دستورالعمل بعدی استفاده می شه.
کلا پشته ساختمان داده ی خوشدست و خوشگلیه و بسته به نیاز شما می تونه کاربرد های مختلفی داشته باشه.
و اما اشاره گر، همونطور که می دونین هر متغیر در حافظه یک آدرس داره (به طور تخصصی تر Right Value) و اون متغیر هم یک مقدار داره (Left Value) ، در حالت عادی شما با مقدار متغیر ها کار می کنین و آدرسش براتون مهم نیست، ولی با استفاده از اشاره گر ها می تونین به آدرس هر متغیر دست پیدا کنین.برای مثال می تونین چندین متغیر رو به یک آدرس نسبت بدین و با عوض کردن مقداری که تو اون آدرس هست، مقدار همه ی اون متغیر ها عوض می شه و از این دست چنگولک بازیا. همچنین در زبان های قدیمی مثل C توی تخصیص متغیر های پویا و ساخت لیست های پیوندی و ... هم کاربرد داره.
البته الان در زبان های سطح بالا و پیشرفته، بدلیل مخاطراتی که برای داده های موجود در حافظه می تونن ایجاد کنن، دیگه اشاره گر ها کاربردی ندارن و طراحان زبان ترجیح دادن که Manage کردن حافظه رو به عهده ی خود زبان و کامپایلر بزارن.مثلا تو دات نت اجازه ی استفاده از اشاره گر در حالت معمولی وجود نداره مگر اینکه برنامه رو در حالت unsafe کامپایل کنین، ضمن اینکه با توجه به پیشرفتهای زبان ها و امکانتشون اصلا نیازی به استفاده از شاره گر ها پیدا نمی کنین.
به عنوان مثال در سیستم عامل ها، بارز ترین کاربردش ترتیب اجرای دستورات در برنامه ها می تونه باشه، مثلا وقتی شما تابعی رو فراخوانی می کنین، آدرس دستورالعمل فعلی در یک پشته گذاشته می شه (با هر بار فراخوانی تابع این کار انجام می شه) بعد از اجرای تابع، مقداری که در بالای پشته قرار داره، آدرس آخرین دستورالعمل متوقف شده به خاطر پرش به تابع است، پس این مقدار برداشته می شه و به عنوان آدرس دستورالعمل بعدی استفاده می شه.
کلا پشته ساختمان داده ی خوشدست و خوشگلیه و بسته به نیاز شما می تونه کاربرد های مختلفی داشته باشه.
و اما اشاره گر، همونطور که می دونین هر متغیر در حافظه یک آدرس داره (به طور تخصصی تر Right Value) و اون متغیر هم یک مقدار داره (Left Value) ، در حالت عادی شما با مقدار متغیر ها کار می کنین و آدرسش براتون مهم نیست، ولی با استفاده از اشاره گر ها می تونین به آدرس هر متغیر دست پیدا کنین.برای مثال می تونین چندین متغیر رو به یک آدرس نسبت بدین و با عوض کردن مقداری که تو اون آدرس هست، مقدار همه ی اون متغیر ها عوض می شه و از این دست چنگولک بازیا. همچنین در زبان های قدیمی مثل C توی تخصیص متغیر های پویا و ساخت لیست های پیوندی و ... هم کاربرد داره.
البته الان در زبان های سطح بالا و پیشرفته، بدلیل مخاطراتی که برای داده های موجود در حافظه می تونن ایجاد کنن، دیگه اشاره گر ها کاربردی ندارن و طراحان زبان ترجیح دادن که Manage کردن حافظه رو به عهده ی خود زبان و کامپایلر بزارن.مثلا تو دات نت اجازه ی استفاده از اشاره گر در حالت معمولی وجود نداره مگر اینکه برنامه رو در حالت unsafe کامپایل کنین، ضمن اینکه با توجه به پیشرفتهای زبان ها و امکانتشون اصلا نیازی به استفاده از شاره گر ها پیدا نمی کنین.