البرمجة بلغة C/ف6:المؤشرات
المفهوم
عدل- مُتغير يخزن عنوان متغير آخر
- نوع مشتق من نوع آخر رئيس:
- int > int* - char > char* ...
- البنية
- type* name= &variable (same type);
- & يتوافق مع العنوان
int main () {
int x = 5;
int* p = &x;
return 0;
}
مؤشر إلى مؤشر
عدل- يمكن أن تشير المؤشرات إلى المؤشرات
- توجد مؤشرات من الدرجة الثانية والثالثة
int main () {
char x = 'c';
char* p1 = &x;
char** p2 = &p1;
return 0;
}
المؤشرات والجداول
عدل- اسم الجدول هو مؤشر للعنصر الأول في الجدول.
- يمكن استخدام هذه الأداة لإدارة الجدول مع الدوال.
- تمرير المؤشر في الدالة!
- ميزة: تبقى القيم في الدالة الرئيسة main()!
- آلية العمل:
- تعريف دالة تقبل مؤشراً وسيطاً.
- تُستدعى في الدالة الرئيسة main ويمرر الاسم في الجدول!
- لا يوجد إعادة تشغيل: تتغير القيمة مباشرة من الدالة الرئيسة main ()
- نوع المؤشر = نوع الجدول
- Pointer type = Table type
- طباعة جدول بدءاً من دالة
#include<stdio.h>
void fon1 (int* a){
for (int i =0; i<size; i++){
printf ("%d ",a[i]);
}
}
int main (){
const int size = 10;
int a [size] = {0,1,2,3,4,5,6,7,8,9};
fon1 (a);
return 0;
}
المؤشرات والدوال
عدل- تجعل المؤشرات من الممكن للخرج أن يعود بأكثر من قيمة واحدة في الدالة.
- "الإرجاع" في هذا السياق يعني أنَّ الدالَّة يمكن أن تغير عدة متغيرات في الدالة الرئيسة main ().
- آلية العمل
- تعريف الدالة التي تقبل مؤشرات وسطاء.
- الاستدعاء في الدالة الرئيسة main () وتمرير عنوان المتغيرات!
- لا يوجد إعادة تشغيل: تتغير القيمة مباشرة في الدالة الرئيسة main ().
- نوع المؤشر = نوع المتغير
- Pointer type = variable type
- c* يشير إلى القيمة التي تشير لها c
- طباعة جدول بدءاً من دالة
#include<stdio.h>
void fon1 (int a, int b, int* c, int* d){
*c = (a+b)*2;
*d = a* b;
}
int main (){
int lon =5, lar =10;
int per, area;
fon1(lon, lar, &per, &area);
printf ("Parameter= %d\n area=%d",per,area);
return 0;
}