قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 961
نشاط [ mohatvnet ]
قوة السمعة:0
قديم 21-08-2013, 09:08 AM المشاركة 1   
افتراضي ماهو الفرق بين pointer متغير و pointer تابت Twitter FaceBook Google+



اسلام عليكم

اخواني الكرام في بعض البرامج الميكروكنترولر مكتوبة بلغة سي الاحظ وجود بعض

المؤشرات من نوع تابت متل
كود:
const char *ptr
وفي بعض الاحيان الاحظ وجود مؤشرات من نوع متغير متل
كود:
unsigned char *ptr
فما هو الفرق بينهم

وما الميزة التي تدعنا للاستعمال المؤشر من نوع تابت

اعلانات

الصورة الرمزية #MAAM#
#MAAM#
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2008
الدولة: EGYPT
المشاركات: 567
نشاط [ #MAAM# ]
قوة السمعة:91
قديم 21-08-2013, 09:45 PM المشاركة 2   
افتراضي


اسلام عليكم

اخواني الكرام في بعض البرامج الميكروكنترولر مكتوبة بلغة سي الاحظ وجود بعض

المؤشرات من نوع تابت متل
كود:
const char *ptr
وفي بعض الاحيان الاحظ وجود مؤشرات من نوع متغير متل
كود:
unsigned char *ptr
فما هو الفرق بينهم

وما الميزة التي تدعنا للاستعمال المؤشر من نوع تابت
انا جربت

كود:
const char *ptr;
واعطاني error ممكن تتأكد منها لو سمحت ....... وبالنسبة ل const معناها ان هذا المتغير اي كان نوعة لن يتغير اثناء البرنامج فلو مثلا عملت كده

كود:
const char x = 10;
void main ()
{
x=11; //error
}
وهذا هو المعنى ففي كل البرنامج قيمة x هية 10 ولن تتغير مهما حدث ولو حاولت تغيرها بأي قيمة تانية هيعطي error

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 961
نشاط [ mohatvnet ]
قوة السمعة:0
قديم 22-08-2013, 08:25 PM المشاركة 3   
افتراضي


اخي الكريم هدا مؤشر وليس متغير من نوع تابت
والمشكلة التي اواجهها هو لا اعرف الفرق بين المؤشر تابت والمتغير ولا اعرف الخصائص التي يتميز بها المؤشر من نوع تابت


الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 961
نشاط [ mohatvnet ]
قوة السمعة:0
قديم 22-08-2013, 08:31 PM المشاركة 4   
افتراضي


اخي الكريم هدا مؤشر وليس متغير من نوع تابت
والمشكلة التي اواجهها هو لا اعرف الفرق بين المؤشر تابت والمتغير ولا اعرف الخصائص التي يتميز بها المؤشر من نوع تابت


الصورة الرمزية #MAAM#
#MAAM#
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2008
الدولة: EGYPT
المشاركات: 567
نشاط [ #MAAM# ]
قوة السمعة:91
قديم 22-08-2013, 09:33 PM المشاركة 5   
افتراضي


ال pointer هنا ليس ثابت انما يشير لمتغير ثابت

كود:
const char *ptr;
وال pointer الثابت يكون بهذه الطريقة

كود:
char * const ptr;
وال pointer الثابت مثله مثل اي متغير لا يمكن تغييرة اثناء البرنامج مهما حصل مثل ماذكرت في ردي السابق عكس ال pointer العادي الذي يمكن تغييرة اثناء البرنامج مثله مثل اي متغير

و const تجعل المتغير يخزن في ROM لذلك لا يمكن تغييره


الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 961
نشاط [ mohatvnet ]
قوة السمعة:0
قديم 23-08-2013, 02:08 PM المشاركة 6   
افتراضي


شكرا جزيلا اخي الكريم على سرعة ردك لكن

هل تقصد ال pointer تابت لا يمكن تغير عنوان الدي يشير اليه ام قيمة المتغير

الدي يشير اليه تكون قيمته تابتة const


الصورة الرمزية #MAAM#
#MAAM#
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2008
الدولة: EGYPT
المشاركات: 567
نشاط [ #MAAM# ]
قوة السمعة:91
قديم 23-08-2013, 06:03 PM المشاركة 7   
افتراضي


شكرا جزيلا اخي الكريم على سرعة ردك لكن

هل تقصد ال pointer تابت لا يمكن تغير عنوان الدي يشير اليه ام قيمة المتغير

الدي يشير اليه تكون قيمته تابتة const
يا اخي pointer متغير مثله مثل char او int ولكنه يختلف في نوع data التي يحملها فهو يحمل عنوان ......... ولذلك عندما يكون ثابت مثل

كود:
char * const ptr;
فإن المتغير الذي يشير اليه لا يتغير لأن العنوان الذي يحمله ال pointer لا يتغير وهكذا

اما في المثال الثاني

كود:
const char *ptr;
فال pointer هنا بشير الى متغير ثابت ولكن pointer نفسه غير ثابت ويمكن تغييره اثناء البرنامج عادي عكس المثال السابق

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 06:33 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025