البرمجة بلغة السى – الجزء الخامس – المؤشرات -1- مقدمة المؤشرات Pointers :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الفئة الأولى :: منتدى البرمجة بلغة السى C Programming
صفحة 1 من اصل 1
البرمجة بلغة السى – الجزء الخامس – المؤشرات -1- مقدمة المؤشرات Pointers :
البرمجة بلغة السى – الجزء الخامس – المؤشرات -1- مقدمة المؤشرات Pointers :
المؤشرات هى ميزة قوية عند البرمجة بلغة السى (C , C++) والتى تجعله مختلف عن غيره من اللغات المعروفة من الجافا أو البيسك المرئى .
تستخدم المؤشرات فى برنامج لغة السى للوصول إلى الذاكرة ومعالجة العنوان .
عامل (مؤثر) المرجع (&) :
إذا كان (var) متغير فإن (&var) هو عنوانه بالذاكرة .
مثال يستعرض استخدام عامل المرجع فى لغة السى :
- الكود:
/* Example to demonstrate use of reference operator in C programming. */
#include <stdio.h>
int main(){
int var=5;
printf("Value: %d\n",var);
printf("Address: %d",&var); //Notice, the ampersand(&) before var.
return 0;
}
الخرج :
- الكود:
Value: 5
Address: 2686778
ملحوظة :
قد تحصل على قيمة عنوان مختلفة عند استخدام هذا الكود .
فى كود المصدر أعلاه ، يتم تخزين القيمة (5) فى موقع الذاكرة 2686778 . والمسمى (var) هو مجرد اسم يعطى لهذا الموقع .
أنت بالفعل استخدمت عامل المرجع عند استخدام الدالة scanf() كما يلى :
- الكود:
scanf("%d",&var);
عامل إلغاء المرجع (*) و متغيرات المؤشرات :
تستخدم متغيرات المؤشرات من أجل أخذ العنوان كقيمة ، بمعنى أن المتغير الذى يخزن قيمة العنوان يسمى متغير المؤشر أو ببساطة "المؤشر" pointer .
إعلان المؤشر :
يستخدم عامل إلغاء المرجع (*) لتعريف (لتحديد) العامل كمؤشر كما يلى :
- الكود:
data_type * pointer_variable_name;
int *p;
العبارة أعلاه تعرف (تحدد) (p) كمتغير مؤشر من نوع int .
مثال لاستعراض عمل المؤشرات :
- الكود:
/* Source code to demonstrate, handling of pointers in C program */
#include <stdio.h>
int main(){
int *pc,c;
c=22;
printf("Address of c:%d\n",&c);
printf("Value of c:%d\n\n",c);
pc=&c;
printf("Address of pointer pc:%d\n",pc);
printf("Content of pointer pc:%d\n\n",*pc);
c=11;
printf("Address of pointer pc:%d\n",pc);
printf("Content of pointer pc:%d\n\n",*pc);
*pc=2;
printf("Address of c:%d\n",&c);
printf("Value of c:%d\n\n",c);
return 0;
}
الخرج :
- الكود:
Address of c: 2686784
Value of c: 22
Address of pointer pc: 2686784
Content of pointer pc: 22
Address of pointer pc: 2686784
Content of pointer pc: 11
Address of c: 2686784
Value of c: 2
شرح البرنامج :
1- الكود :
- الكود:
int *pc, c;
ينشىء المؤشر (pc) والمتغير (p) . المؤشر (pc) يشير إلى عنوان ما وهذا العنوان به قيمة نفايات . بالمثل ، المتغير © أيضا به قيمة نفايات عند هذه النقطة .
2- الكود :
- الكود:
c=22;
يجعل قيمة (c) تساوى (22) ، أى يتم تخزين (22) فى موقع الذاكرة للمتغير (c) .
3- الكود :
- الكود:
pc=&c;
يقوم بعمل مؤشر ، يشير إلى عنوان المتغير ( c ) . لاحظ أن (&c) هو عنوان المتغير ( c ) ( لأن c هو متغير عادى ) و (pc) هو عنوان pc ( لأن pc هو متغير مؤشر) . ونظرا لأن عنوان pc هو نفسه عنوان c ، فإن ( *pc) ، فيمة المؤشر pc سوف تكون مساوية لقيمة c .
4- الكود :
- الكود:
c=11 ;
يجعل قيمة c بالقيمة "11" . وحيث أن المؤشر pc يشير إلى عنوان c فإن قيمة (*pc) سوف تكون أيضا "11" .
5- الكود :
- الكود:
*pc=2;
يغير محتويات موقع الذاكرة المشار إليه بالمؤشر pc ليتغير إلى القيمة "2" . وحيث أن عنوان المؤشر pc هو نفسه عنوان c فإن قيمة c تتغير أيضا إلى القيمة "2" .
الأخطاء الشائعة فى المؤشرات :
افترض أن المبرمج يريد أن يشير المؤشر pc لعنوان c عندئذ :
- الكود:
int c, *pc;
pc=c; /* pc is address whereas, c is not an address. */
*pc=&c; /* &c is address whereas, *pc is not an address. */
فى كلا الحالتين ، المؤشر pc لا يشير إلى عنوان c .
مواضيع مماثلة
» البرمجة بلغة السى – الجزء الثالث – 1- مقدمة الدوال Functions
» البرمجة بلغة السى - أمثلة الجزء الأول – البرنامج الخامس : إيجاد قيمة كود أسكى ASCII لحرف .
» دروس البرمجة بلغة السى - 1 - مقدمة C Programming
» البرمجة بلغة السى – الجزء الثانى -2- حلقة for
» البرمجة بلغة السى – الجزء الثانى -1- عبارة if , if..else , Nested if..else :
» البرمجة بلغة السى - أمثلة الجزء الأول – البرنامج الخامس : إيجاد قيمة كود أسكى ASCII لحرف .
» دروس البرمجة بلغة السى - 1 - مقدمة C Programming
» البرمجة بلغة السى – الجزء الثانى -2- حلقة for
» البرمجة بلغة السى – الجزء الثانى -1- عبارة if , if..else , Nested if..else :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الفئة الأولى :: منتدى البرمجة بلغة السى C Programming
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى