المتغير.. فى أغلب لغات البرمجه فالمتغير هو مكان لتخزين المعلومات، المتغير هو مكان او موقع فى ذاكرة الجهاز حيث يمكن تخزين قيمة بداخله ثم امكانية استعادة هذه القيمة فيما بعد.
والمتغير هو اسم يمثل برقم أو سلسلة حرفية (وممكن حرف واحد او تعبير منطقى ).
- من الممكن تصور ذاكرة الجهاز على انها مجموعة من المواقع التى تخزن فيها المعلومات، هذه المواقع مرقمة بشكل متسلسل تبدأ من الصفر وتنتهى بحجم الذاكرة، تعرف هذة الارقام بعناوين الذاكرة (addresses)، يمثل أسم المتغير (بطاقة عنونة) ملصقه على احد المواقع بحيث تستطيع الوصول اليه سريعا دون الحاجه الى معرفة العناوين الحقيقية فى الذاكرة (لذا فإن المتغير سيشير الى احد هذه العناوين، وعند حاجتك وضع قيمة فى الموقع الذى يشير له هذا المتغير فان المعالج سيذهب الى العنوان الذى يشير له المتغير ويضع فيه القيمة وكذلك عندما تريد ان تعرف قيمة المتغير فان المعالج يذهب الى العنوان الذى يشير له المتغير ويقرا القيمة التى فيه ). يعرض الشكل التالى الفكرة والتى تبين بعض المواقع فى الذاكرة والتى من الممكن أن تشير اليها المتغير
ملاحظة:
لغة C++ تعد حساسة لحالة الاحرف (اى انها تميز بين الأحرف الكبيرة والصغيرة )، لذلك فان الحرف الصغير يعد معرفا غير مساوى لشكله الكبير وان بعض لغات البرمجة لا تميز بين حالات الاحرف.
تتكون أسماء المتغيرات من حرف واحد، مجموعة حروف، او حروف وارقام ومن الممكن استخدام الشارحة..على ان يكون دائما أول رمز باسم المتغير حرف او شارحه حتما مثل:
(X / ad / count / endofpoint / hind6/ x345) هذه المتغيرات مقبولة.

ملاحظة:
أن اسناد قيمة لمتغير من نوع معين خارج المدى المحدد له سيؤدى الى حدوث خطأ , هذا الخطأ أما أن يوقف التنفيذ أو يودى الى ظهور نتائج غير متوقعة.
يتم الأعلان عن المتغير وذلك بان يتم كتابة النوع أولا ثم يتبع ذلك اسم المتغير والذى يجب ان يخضع للقواعد المذكوره انفا فمثلا:
INT A:
FLOAT MYNUM:
وهذة تكافىء الأعلان التالى
INT X:
INT Y:
INT Z:
الطريقتان صحيحتان والفرق هو ان الأولى أكثر اختصارا.
ملاحظة:
أما المتغيرات التالية فهى غير مقبولة:
(First name / next. Word/ 15 may / ten%)
والسبب هو ان المتغير الأول يحتوى على فراغ، الثانى يحتوى على نقطة، والثالث يبدا برقم، أما الأخير فيحتوى على رمز لا يمكن إستخدامه مع المتغيرات..وهذه جميعاً غير مقبولة فى البرنامج.إن إختيار المتغير من قبل المبرمج تعد مسأله مهمه ويفضل أن يعكس المتغير المعنى الذى يستخدم لأجله المتغير فمثلا يفضل إستخدام المتغير (sum) مع الجمع واذا ما استخدم متغير آخر فان ذلك سوف لا يؤدى الى اى خطا، وكذلك يفضل أن لا يكون المتغير طويل فمثلا يفضل استخدام متغير متكون من حرف واحد عندما نستخدمه فى برنامج قصير ولا يتكرر كثيرا، اما استخدام متغير من حرف واحد ويستخدم بشكل متكرر وباجزاء متكررة فى برنامج طويل فانه يعد اختيارا سيئا بالرغم من انه لا يعيق عمل البرنامج.
ليس بالإمكان تحرير متغيرات الى الدالة فقط ولكن بالإمكان الاعلان عن متغيرات داخل جسم الدالة ايضا، وهذا يتم باستخدام المتغيرات المحلية (Local variables) وسميت كذلك لتوجدها محليا في الدالة نفسها فقط، اذ ان هذه المتغيرات سوف لا تستمر فعاليتها بعد انتهاء تنفيذ الدالة (اي بعد اعادة القيمة من الدالة).المتغيرات المحلية تعرف مثل المتغيرات الاخرى.. كذلك فان الوسائط التي تمرر الى الدالة تعد متغيرات محلية وبالإمكان استخدامها بالضبط كما لو كانت معروفة داخل جسم الدالة.اما المتغيرات التي تعرف خارج جميع الدوال فلها تأثير عام على كامل البرنامج بكل دوال وتسمى المتغيرات العامة (global variables) وبرغم من كون المتغيرات العامة متغيرات مقبولة في C++
لكنها غالبا لا تستخدم.. وبشكل عام فهي ضرورية وخطرة، ضرورية لان المبرمج احيانا يحتاج الي بيانات تكون متوفرة لعدد من الدوال لا يرغب ان يمررها كوسائط من دالة اخري.. وهى خطرة لأنها بيانات مشتركة وبإمكان دالة ان تغير المتغير العام بطريقة ربما تكون غير مرئية من الدوال الاخرى وهذا يولد خطأ من العسير إيجاده
وهي الكلمات التي يكتبها المبرمج نفسه لكي يعبر عن المتغيرات في برنامجه كان يسمي مثلا المتغير x يطلق عليه علي سبيل المثال sum ويمكن ان نعرفها علي أنها أماكن محجوزة في الذاكرة يتم تخزين البيانات فيها بشكل مؤقت ليستعمله البرنامج أثناء مرحلة التنفيذ وهذه المتغيرات تمتلك اسما ونوعا وقيمة في أماكن تخزينها وسوف تتعرف علي المتغيرات بنفسك عندما تبدأ في كتابة البرنامج
البيانات data
كل عنصر من البيانات فى البرنامج اما ان تكون قيمته ثابته او متغيرة (قيمة المتغير ربما تتغير خلال تنفيذ البرنامج). كل متغير (الذى هو البيانات) فى البرنامج يجب أن يكون له نوع وبموجب هذا النوع سيتم تحديد المساحه الخزينة اللازمة لقيمة هذا المتغير، وكذلك تحدد العمليات التى ممكن اجراؤها على هذا المتغير (تحدد لكل نوع عدد البايتات فى الذاكرة التى تحجز لخزن قيم ذلك النوع وعند الكتابة فى هذا الموقع فان الكتابة ستحدد بعدد بايتات هذا النوع أى لا يتم تجاوز هذا العدد من البايتات حتى وان كانت القيمة تتجاوز الحدود العليا والدنيا لهذا النوع، وعند القراءة فانه سيتم قراءة القيم الموجودة فى هذه البايتات فقط وبذلك تتجن بالخطأ فى القراءة والكتابة ).