سي بلس بلس: الدرس الثامن عشر
التعامل مع الذاكرة باستخدام المؤشرات (Pointers):
في C++، يمكنك استخدام المؤشرات للإشارة إلى عناوين الذاكرة والتحكم فيها مباشرة. تُستخدم المؤشرات لتخزين عناوين الذاكرة للمتغيرات والكائنات، مما يسمح لك بالوصول إلى البيانات وتعديلها بشكل مباشر. على سبيل المثال:
cppCopy code#include <iostream>
using namespace std;
int main() {
int x = 10;
int* ptr; // تعريف مؤشر
ptr = &x; // تعيين قيمة المؤشر لعنوان x
cout << "Value of x: " << x << endl;
cout << "Address of x: " << &x << endl;
cout << "Value of ptr: " << ptr << endl;
cout << "Value pointed to by ptr: " << *ptr << endl;
// تعديل قيمة x باستخدام المؤشر
*ptr = 20;
cout << "New value of x: " << x << endl;
return 0;
}
التعامل مع المصفوفات باستخدام المؤشرات:
يمكن استخدام المؤشرات للوصول إلى عناصر المصفوفات والتعامل معها بشكل فعال. يمكن تعريف المؤشرات لتحديد عناصر المصفوفة والوصول إليها باستخدام التفريغ (dereferencing) للمؤشرات. على سبيل المثال:
cppCopy code#include <iostream>
using namespace std;
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
int* ptr = numbers; // المؤشر يشير إلى عنوان العنصر الأول
// الوصول إلى عناصر المصفوفة باستخدام المؤشر
cout << "First element: " << *ptr << endl;
cout << "Second element: " << *(ptr + 1) << endl;
return 0;
}
التعامل مع المصفوفات متعددة الأبعاد باستخدام المؤشرات:
يمكن استخدام المؤشرات للوصول إلى عناصر المصفوفات متعددة الأبعاد والتعامل معها بشكل مماثل. يمكن تعريف المؤشرات للتنقل في المصفوفات متعددة الأبعاد باستخدام العناوين الفرعية (subscripts) لكل بُعد. على سبيل المثال:
cppCopy code#include <iostream>
using namespace std;
int main() {
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
int* ptr = *matrix; // المؤشر يشير إلى العنصر الأول في المصفوفة
// الوصول إلى عناصر المصفوفة باستخدام المؤشر
cout << "First element: " << *ptr << endl;
cout << "Second element: " << *(ptr + 1) << endl;
return 0;
}
الختام:
في هذا الدرس، قمنا بتوسيع فهمنا للمفاهيم الأساسية في C++، بما في ذلك التعامل مع المؤشرات واستخدامها للتحكم في الذاكرة، وكيفية التعامل مع المصفوفات باستخدام المؤشرات. يمكنك الآن استخدام هذه المفاهيم بشكل فعّال لتطوير برامجك بشكل أكثر تعقيدًا وفعالية.