الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هى فائدة المؤشرات

بدأه sniper477 في 17 يوليو 2010 · 4 رد · 4,086 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

قرات عنها كثيرا ولكنى لم افهم الفائدة الفعلية منها

مثلا فى هذا الكود

#include <iostream>
using namespace std;
int main(){

	int var=5;
	int *pVar;
	pVar=&var;
	cout<<var<<endl<<&var<<endl<<pVar<<endl<<*pVar<<endl;
	return 0;

سيكون الناتج :

5

0012FF60

0012FF60

5

الاول طبيعى والثانى طبيعى لانه يشير الى العنوان

اما الثالث والرابع ما الفائدة منهم؟؟ حيث انه يمكننى الحصول على نفس النتائج بالطريقتين السابقتين

فارجو توضيح الفائدة من المؤشرات وان وجد كتاب او فيديو يشرحها بطريقة مبسطة فارجو اضافته

وجزاكم الله خيرا

منذ ولدت وانت تفخر بالاسلام ...... فمتى يفخر الاسلام بك؟

.

.

.

.

تفقد ان جهلت وانت باق .......... وتوجد ان علمت ولو فقدت

#2

المؤشرات تمكنك من التعامل مع الذاكره مباشره,,,,,

قد تستطيع أن تنجز أعمالك بدون مؤشرات,,,,, ولكنك ساعتها ستفقد الكثير من الخصائص ال low-level ,,, و هناك الكثير من اللغات التي لا تستخدم مؤشرات, مثل الجافا مثلا..

#3

فائدة المؤشرات تأتى عندما تقوم بإنشاء مصفوفات غير معلومة الحجم وقت تصميم البرنامج و بالتالى تحتاج لحجز مساحه بالذاكره لهذه المصفوفات او ان تحتاج لإنشاء كائن فى الذاكره لتداوله بين اجزاء عديده من البرنامج، ايضا توجد حالات اخرى.

الدوال المستخدمه لحجز مساحات الذاكره تطلب منك المساحه التى تريد حجزها و تعيد لك الموقع بعد ان تتم عملية الحجز، الموقع الذى يعاد لك يسمى بمؤشر لذلك المكان، ايضا الدوال التى تقوم بتحرير الذاكره تطلب منك الموقع بالذاكره التى ستقوم بتحريره.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#4

السلام عليكم

سوف أشرح لك قليلاً عن المؤشرات :

تستخدم هذه التقنية لتخزين عناوين الذاكرة memory address التي تتوضع فيها المتغيرات و للمؤشرات العديد من الإستخدامات.

1-تستخدم المؤشرات كمرحع reference

حيث أننا نستطيع أن نمرر بواسطتها الوسطاء للتوابع و بالتالي تصبح تتعامل مع القيمة مباشرة بدلاً من أن تتعامل مع نسخة منها و الدليل على ذلك البرنامج التالي:

حيث يوضّح لك البرنامج التالي أنه عندما استخدمنا المتغير كوسيط لتابع -من المفروض أن يغير قيمته- و استدعينا التابع و قام بعمله و أخرجنا قيمة المتغير بعد الاستدعاء نلاحظ أنها لم تتغير لأننا كنا نتعامل مع صورة من هذا المتغير أما عندما نستخدم المؤشرات فإن الموضوع يختلف :

#include<iostream.h>
void changevalue(int);
void changeptr(int *);
void main()
{
	int a=5;
	int *ptr=&a;

changevalue(a);

	cout<<"a="<<a<<endl;

changeptr(ptr);

cout<<"a="<<a<<endl;
}
void changevalue(int a)
{
a=a+1;
}
void changeptr(int *a)
{
*a=*a+1;
}

الخرج

a=5

a=6

2-التخصيص الديناميكي للذاكرة :

باستخدام العاملين new و delete عبر التركيب التالي ينشئ مصفوفة متغيرة حجمها يتم إدخاله من المتسخدم و عندما تنتهي من استخدامها تحذفها عبر delete

#include<iostream.h>
void main()
{
	int arrsize;
	cout<<"\t\n\tenter the size of the array\n"<<endl;
	cin>>arrsize;
	int *ptr;
	ptr=new int [10];//(pointer_name=new datatype size)
	cout<<"\t\n\tnow you can control your array by pointers\n"<<endl;
		cout<<"enter the 5'th element"<<endl;
	cin>>*(ptr+5);
	cout<<"you entered "<<*(ptr+5)<<endl;
	delete ptr;//(delete pointer_name)
	cout<<*(ptr+5)<<endl;//that show you that you have deleted the array
}

الخرج:

enter the size of the array

10

now you can control your array by pointers

enter the 5'th element

5

you entered 5

-572662307

3-التعامل مع السلاسل:

تستخدم المؤشرات بكثرة في التعامل مع السلاسل المحرفية في القلب و البحث و ما إلى ذلك(راجع التمرين رقم 30من الكتاب الذي سيرد ذكره في الأسفل)

لمزيد من المعلومات راجع الصفحة 47 من كتاب مدخل من الخوارزميات و البرمجة

http://www.mediafire.com/?4torzyv5s2iq1ut

2
#5

المؤشرات هي متغيرلت تقوم بتحزين عناوين متغيرات اخرى في الذاكرة و لها علاقة مع :

- المصفوفات

- الحجز الديناميكي للذاكرة

-الدوال .

تستعمل المؤشرات بكثرة في لغة سي بينما في سي ++ فقد تم اضافة "المراجع references" وهي نسخة مخففة من المؤشرات يمكن استعمالها دون اعراض جانبية في الحالات التي لا تستوجب استعمال التحكم الكامل الذي توفه المؤشرات.

ملاحظة: المؤشرات سلاح ذو حدين اذا استعملته بشكل جيد فلا مشكلة اما اذا استعملت بشكل خاطئ فهي تؤدي الى اخطاء "خطيرة."

لذلك يجب تجنب المؤشرات قدر المستطاع و استعمالها فقط في الحالات التي تستوجب ذلك.

مواضيع مشابهة