المؤشر - Pointer

وقت القراءة: 3 دقائق 137 مشاهدة

في لغة C++، المؤشر هو متغير يقوم بتخزين عنوان الذاكرة لمتغير آخر. توفر المؤشرات آلية قوية للعمل مع الذاكرة وهياكل البيانات. إنها تسمح بالمعالجة المباشرة لعناوين الذاكرة وتمكن من إدارة الذاكرة بكفاءة.

إعلان المؤشرات

للإعلان عن مؤشر، يمكنك استخدام نوع البيانات متبوعًا بالعلامة النجمية (*) واسم المؤشر. على سبيل المثال:

int *ptr; // Declares a pointer to an integer
double *dblPtr; // Declares a pointer to a double

تفعيل المؤشرات

يجب تفعيل المؤشرات قبل الاستخدام. يمكنك تفعيل المؤشر عن طريق تعيين عنوان متغير له. يتم استخدام عنوان الـoperator (&) للحصول على عنوان الذاكرة للمتغير.

int num = 10;
int *ptr = # // Initializes ptr with the address of num

عدم مرجعية المؤشرات Dereferencing Pointers

Dereferencing a pointer إلى المؤشر يعني الوصول إلى القيمة المخزنة في عنوان الذاكرة الذي يشير إليه. يتم استخدام عامل الـderefrencing (*) لهذا الغرض.

int num = 10;
int *ptr = #

cout << *ptr; // Prints the value stored at the address pointed by ptr

مثال 1:

#include <iostream>
using namespace std;

int main() {
    // Declaration of a pointer to an integer
    int *ptr;

    // Declaration and initialization of an integer variable
    int val = 5;

    // Assigning the address of 'val' to the pointer 'ptr'
    ptr = &val;

    // Printing the address stored in the pointer
    cout << ptr << endl;

    // Printing the value stored at the address pointed by 'ptr'
    cout << *ptr << endl;

    // Return 0 to indicate successful execution
    return 0;
}

يعلن هذا الكود عن مؤشر، ويقوم بتفعيل متغير عدد صحيح، ويعين عنوان هذا المتغير للمؤشر، ثم يطبع قيمة المؤشر (عنوان الذاكرة) والقيمة التي يشير إليها.

النقاط الرئيسية:

  1. الإعلان عن المؤشر:
    int *ptr;: يعلن عن مؤشر لعدد صحيح. هذا المؤشر غير مفعل حاليًا.
  2. الإعلان وتفعيل المتغير:
    int val = 5;: يعلن عن متغير عدد صحيح يسمى val ويقوم بتفعيله وإعطاؤه القيمة 5.
  3. تعيين عنوان للمؤشر:
    ptr = &val;: يعين عنوان الذاكرة للمتغير val للمؤشر ptr. الآن "يشير" ptr إلى موقع الذاكرة الخاص بـ val.
  4. طباعة قيمة المؤشر (عنوان الذاكرة):
    cout << ptr << endl;: يطبع عنوان الذاكرة المخزن في المؤشر ptr. يتم تمثيل العنوان عادةً بتنسيق hexadecimal.
  5. طباعة القيمة على العنوان المشار إليه بالمؤشر:
    cout << *ptr << endl;: يستخدم عامل الـdereference (*) للوصول إلى القيمة المخزنة في عنوان الذاكرة المشار إليه بواسطة ptr. ويطبع القيمة المخزنة في المتغير val.

المخرجات:
إذا قمت بتشغيل هذا البرنامج، فإن المخرجات ستكون كما يلي:

0x7ffee3c86a4c   // The memory address (this will vary on each run)
5                // The value stored at the memory address

مثال 2:

#include <iostream>
using namespace std;
int main()
{
    int *p;
    int v = 9;
    p = &v;
    cout << *p << endl;
    return 0;
}

يطبع هذا الكود عنوان القيمة التي يشير إليها المؤشر p باستخدام التعبيرات &*p.

cout << &*p << endl;: يستخدم عامل الـdereference (*) للوصول إلى القيمة المخزنة في عنوان الذاكرة المشار إليه بـ p. ثم يأخذ عامل التشغيل & عنوان هذه القيمة. بشكل أساسي، &*p يعادل p فقط، لذلك يطبع هذا السطر عنوان الذاكرة المخزن في المؤشر p.

 

مشاركة هذا

المؤشر - Pointer

Or copy link

المحتوى
Arabic