English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعرف على علاقة البايتات والمراجع، وكيفية استخدامها بشكل فعال في البرنامج.
المراجعهي متغيرات حفظ العناوين. يمكن للمراجع أن تحفظ عناوين متغيرات واحدة، وكذلكالبايتاتعنوان الوحدة.
انظر إلى المثال التالي:
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 بايت، لأن حجم الحرف هو بايت واحد.
برنامج 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
يستخدم برنامج 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]
برنامج 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