English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساسية

تحكم في العملية C++

وظيفة C++

البايتات و الأنواع C++

هياكل بيانات C++

كلاس C++ و العناصر

المؤشرات في C++

الوراثة في C++

تعليمية STL C++

دليل مرجع C++

المؤشرات والأدوات في C++

في هذا المقال، ستتعرف على علاقة البايتات والمراجع، وكيفية استخدامها بشكل فعال في البرنامج.

المراجعهي متغيرات حفظ العناوين. يمكن للمراجع أن تحفظ عناوين متغيرات واحدة، وكذلكالبايتاتعنوان الوحدة.

انظر إلى المثال التالي:

int* ptr;
int a[5];
ptr = &a[2]; // &a[2] هو عنوان العنصر الثالث من a[5].

لنفترض أن المرجع يحتاج إلى تشير إلى العنصر الرابع من البايتات، وهو عنوان حفظ العنصر الرابع في الحالة السابقة.

بسبب أن ptr يشير إلى العنصر الثالث في المثال السابق، سيشير ptr + 1 إلى العنصر الرابع.

قد تعتقد أن ptr + 1 يوفر لك عنوان البايت التالي لـ ptr. ولكن هذا غير صحيح.

هذا لأن المرجع ptr يشير إلى مرجع عدد، ويكون حجم عدد ثابت بالنسبة للنظام التشغيل (في نظام تشغيل 64 بت، حجم نوع number هو 4 بايت). لذلك، الفرق بين ptr وptr + 1 سيكون 4 بايت.

إذا كان المرجع ptr يشير إلى مرجع حرف، فإن الفرق بين عناوين ptr وptr + 1 سيكون 1 بايت، لأن حجم الحرف هو بايت واحد.

مثال 1: مراجع C++ و البايتات

برنامج C++ يستخدم البايتات والمراجع لعرض عناوين عناصر البايتات

#include <iostream>
using namespace std;
int main()
{
    float arr[5];
    float *ptr;
    
    cout << "استخدام البايتات لعرض العناوين: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "&arr[" << i << "] = " << &arr[i] << endl;
    }
    // ptr = &arr[0]
    ptr = arr;
    cout << "\nاستخدام الإشارات لعرض العناوين: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "ptr + " << i << " = " << ptr + i << endl;
    }
    return 0;
}

نتائج الإخراج

استخدام المجموعة لعرض العناوين:
&arr[0] = 0015F718
&arr[1] = 0015F71C
&arr[2] = 0015F720
&arr[3] = 0015F724
&arr[4] = 0015F728
استخدام الإشارات لعرض العناوين:
ptr + 0 = 0015F718
ptr + 1 = 0015F71C
ptr + 2 = 0015F720
ptr + 3 = 0015F724
ptr + 4 = 0015F728

في البرنامج المذكور أعلاه، يتم عرض عناوين عنصر المجموعة arr باستخدام إشارات مختلفة ptr.

لكن يمكن الوصول إلى عنصر المجموعة باستخدام نفس اسم المجموعة arr باستخدام طريقة إشارات الإشارة. على سبيل المثال:

int arr[3];
&arr[0] تساوي arr
&arr[1] تساوي arr + 1
&arr[2] تساوي arr + 2

مثال 2: الإشارات والمجموعات

يستخدم برنامج C++ الرموز الدالة للإشارة لعرض عناوين عناصر المجموعة.

#include <iostream>
using namespace std;
int main() {
    float arr[5];
    
    cout << "استخدام الرموز الدالة للإشارة لعرض العناوين: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << arr + i << endl;
    }
    return 0;
}

نتائج الإخراج

استخدام الرموز الدالة للإشارة لعرض العناوين:
045FB90
045FB94
045FB98
045FB9C
045FBA0

تعلمون، يشير الإشارة ptr إلى العنوان، بينما يعطي التعبير *ptr القيمة المحفوظة في العنوان.

بالمثل، يمكن استخدام *(ptr + 1) للحصول على القيمة المحفوظة في ptr + 1.

يرجى النظر في الكود التالي:

int ptr[5] = {3, 4, 5, 5, 3};
  • &ptr[0] تساوي ptr، *ptr يساوي ptr[0]

  • &ptr[1] تساوي ptr + 1، *(ptr + 1) يساوي ptr[1]

  • &ptr[2] تساوي ptr + 2، *(ptr + 2) تساوي ptr[2]

  • &ptr[i] تساوي ptr + i، *(ptr + i) تساوي ptr[i]

مثال 3: إشارات الإشارة في C++ والمجموعات

برنامج C++ للاشارة إلى البيانات المدخلة باستخدام الرموز الدالة للإشارة عرضها.

#include <iostream>
using namespace std;
int main() {
    float arr[5];
    
   // إدراج البيانات باستخدام رمز المؤشر
    cout << "إدخال 5 أرقام: ";
    for (int i = 0; i < 5; ++i) {
        cin >> *(arr + i);
    }
    // عرض البيانات باستخدام رمز المؤشر
    cout << "عرض البيانات: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << *(arr + i) << endl;
    }
    return 0;
}

نتائج الإخراج

إدخال 5 أرقام: 125
145
180
225
335
عرض البيانات:
125
145
180
225
335