• 0

ماذا تعني المؤشرات pointers في ++C ؟

أقوم بدراسة الفروقات بين لغات البرمجة وأحتاج لفهم المؤشرات في لغة C++ ومعرفة استخدامها مع الشرح

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

تعتبر المؤشرات Pointers من أقوى الميزات التي تمتاز بها لغة ++C عن باقي اللغات المشهورة مثل جافا، فيجوال بيسك..الخ.

لفهم عمل المؤشرات واستخدامها لابد أولًا أن يكون لديك معرفة عن ما هو العنوان Address في ذاكرة الحاسوب. 

تُقسم ذاكرة الحاسوب إلى أجزاء من bytes وكل بايت لديه العنوان الخاص به على سبيل المثال في ذاكرة حجمها 1 KB يوجد 1024 bytes وكل بايت يعطي عنوان (أي أن مجال العناوين من 0 - 1023).

فالمؤشرات إذًا هي متغيرات تختزن عناوين متغيرات أخرى في الذاكرة بالـ hexadecimal النظام الست عشري، يمكن للمؤشرات أن تؤشر على متغير من نوع  primitive أو عنصر من مصفوفة array أو غرض object.

يُعرّف المؤشر بطريقتين:

int *p;
      أو
int* p;

مثال على طريقة تعريف مؤشر وإسناد عنوان متغير من نوع int  إليه:

int* ptr;
int a = 5;
ptr = &a;  // &a is the address of a.

التعليمة البرمجية int* ptr تعرف مؤشر pointer من نوع int أي أن العنوان الذي يختزنه هو عنوان متغير من نوع int.

التعليمة البرمجية ptr = &a تقوم بإسناد عنوان المتغير a إلى المؤشر p (أي أن a& هو عنوان المتغير a وتُقرأ ( Reference a) رفرنس a).

pointers.thumb.png.97d78741c863480faa420

مثال:

#include <iostream>
using namespace std;
int main() {
    int *pc, c;
    
    c = 5;
    cout<< "Address of c (&c): " << &c << endl;
    cout<< "Value of c (c): " << c << endl << endl;

    pc = &c;    // Pointer pc holds the memory address of variable c
    cout<< "Address that pointer pc holds (pc): "<< pc << endl;
    cout<< "Content of the address pointer pc holds (*pc): " << *pc << endl << endl;
    
    c = 11;    // The content inside memory address &c is changed from 5 to 11.
    cout << "Address pointer pc holds (pc): " << pc << endl;
    cout << "Content of the address pointer pc holds (*pc): " << *pc << endl << endl;

    *pc = 2; 
    cout<< "Address of c (&c): "<< &c <<endl;
    cout<<"Value of c (c): "<< c<<endl<< endl;

    return 0;
}

النتيجة:

pointersOutPut.thumb.png.d6d0c339ac63f81

ماذا تعني المؤشرات pointers في ++C ؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن