"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم المؤشرات

فهم المؤشرات

تم النشر بتاريخ 2024-07-29
تصفح:500

Entendendo Ponteiros

في درجات التكنولوجيا، هناك مفاهيم ومواضيع تخيف الطلاب بشكل عام، وبعض الأمثلة الرئيسية هي المواضيع المتعلقة بالبرمجة الشيئية وحساب التفاضل والتكامل، ومثال آخر هو بعض المفاهيم الأساسية المجردة وظائف مثل المؤشرات، بشكل رئيسي في لغة C، موضوع هذه المقالة.
وعلى عكسنا، فإن أجهزة الكمبيوتر لا تعرف معلومات معينة عن طريق "التسمية" أو "الاسم"، بل عن طريق العنوان الذي توجد فيه هذه البيانات في الذاكرة. يمكننا أن نفكر في الذاكرة كمجموعة من “الخلايا” التي تحتوي على عدد من البتات التي تخزن 0 أو 1 وترتبط كل خلية بعنوان معين حيث تقوم بتخزين بعض المعلومات لتتمكن البرامج التي تنفذها الآلة من الوصول إلى هذه البيانات ومعالجتها هو - هي. .
مع الأخذ في الاعتبار أنه لكي يتمكن البرنامج من استخدام البيانات، فإنه يحتاج إلى معرفة عنوانها في الذاكرة، يمكننا تصور مفهوم المؤشر. المؤشر عبارة عن متغير "يشير" إلى بعض البيانات الأخرى، كما لو كان مساحة في الذاكرة مخصصة لتخزين عنوان متغير أو معلومات أخرى بحيث يمكن التعامل معها.
ولكن السؤال الذي يطرح نفسه الآن، ما فائدة المؤشر؟ يسمح المؤشر ببعض العمليات الأكثر تعقيدًا التي تتضمن الذاكرة، مثل التخصيص الديناميكي باستخدام Malloc أو إنشاء هياكل بيانات أكثر تعقيدًا، وما إلى ذلك. علاوة على ذلك، هناك بعض التفاصيل التي لا يلاحظها الطلاب بسهولة في البداية، مثل حقيقة أن اسم المتجه هو مؤشر. هذا صحيح، المتجه ليس أكثر من "مؤشر ثابت" يشير إلى موضع معين في الذاكرة ونستخدم الفهرس للتلاعب به حسب الحاجة.
استخدام آخر هو معالجة البيانات حسب المرجع، على سبيل المثال: تمرير مصفوفة كمعلمة إلى وظيفة أخرى، مما يسمح بتعديل المصفوفة الأصلية بدلاً من أن تكون القيمة التي تم تمريرها أو الكائن مجرد نسخة، وهو أمر يحدث، على سبيل المثال، في Javascript حيث لا يوجد مفهوم للمؤشر (على الأقل ليس بشكل صريح)، على سبيل المثال:

#include 

int vet [5] ={10,20,3,4};

void somadez(int * ref){
    for(int i=0;i



استخدام آخر غير واضح للمؤشرات، هذه المرة للغات الموجهة للكائنات، حيث يمكننا، على سبيل المثال، إنشاء كائنات ديناميكية وتسهيل العمل مع الوراثة وتعدد الأشكال.
لدينا هذا المثال أدناه مع C:

#include 

using namespace std;

class Animal{
public:
    virtual void som();
};

class Cachorro : public Animal{
public:
    void som(){
        cout som();
    //neste caso podemos usar o ponteiro para acessar métodos e atributos de uma classe derivada.
    return 0;
}
بيان الافراج تم نشر هذه المقالة على: https://dev.to/adrielh024/entendo-ponteiros-1n8e إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3