المتغير ليس سوى اسم يُعطى لمنطقة التخزين التي يمكن لبرامجنا معالجتها. كل متغير في C له نوع معين ، والذي يحدد حجم وتصميم ذاكرة المتغير ؛ نطاق القيم التي يمكن تخزينها في تلك الذاكرة ؛ ومجموعة العمليات التي يمكن تطبيقها على المتغير.
يمكن أن يتكون اسم المتغير من أحرف وأرقام وشرطة سفلية. يجب أن يبدأ بحرف أو بشرطة سفلية. الأحرف الكبيرة والصغيرة مميزة لأن C حساسة لحالة الأحرف. بناءً على الأنواع الأساسية الموضحة في الفصل السابق ، ستكون هناك أنواع المتغيرات الأساسية التالية -
الأب رقم. | النوع والوصف |
---|---|
1 | char نموذجيًا ثماني بتات واحدة (بايت واحد). إنه نوع عدد صحيح. |
2 | int الحجم الأكثر طبيعية للعدد الصحيح للآلة. |
3 | float قيمة فاصلة عائمة أحادية الدقة. |
4 | double قيمة فاصلة عائمة مزدوجة الدقة. |
5 | void يمثل غياب النوع. |
تسمح لغة البرمجة C أيضًا بتحديد أنواع أخرى متنوعة من المتغيرات ، والتي سنغطيها في الفصول اللاحقة مثل التعداد ، المؤشر ، المصفوفة ، الهيكل ، الاتحاد ، إلخ. بالنسبة لهذا الفصل ، دعنا ندرس فقط أنواع المتغيرات الأساسية.
تعريف متغير في c
يخبر تعريف المتغير المترجم عن مكان وكمية التخزين التي سيتم إنشاؤها للمتغير. يحدد تعريف المتغير نوع البيانات ويحتوي على قائمة بمتغير واحد أو أكثر من هذا النوع على النحو التالي -
type variable_list;
هنا، نوع يجب أن يكون نوع C بيانات صالحة بما في ذلك شار، w_char، كثافة، تطفو، مزدوجة، منطقي، أو أي كائن المعرفة من قبل المستخدم. و variable_list قد تتكون من أسماء المعرف واحد أو أكثر مفصولة بفواصل. يتم عرض بعض الإعلانات الصالحة هنا -
int i, j, k; char c, ch; float f, salary; double d;
السطر int i ، j ، k ؛ يصرح ويحدد المتغيرات i و j و k ؛ التي توجه المترجم لإنشاء متغيرات تسمى i و j و k من النوع int.
يمكن تهيئة المتغيرات (تعيين قيمة أولية) في إعلانها. يتكون المُهيئ من علامة يساوي متبوعة بتعبير ثابت على النحو التالي -
type variable_name = value;
بعض الأمثلة -
extern int d = 3, f = 5; // declaration of d and f. int d = 3, f = 5; // definition and initializing d and f. byte z = 22; // definition and initializes z. char x = 'x'; // the variable x has the value 'x'.
للتعريف بدون مُهيئ: يتم تهيئة المتغيرات ذات مدة التخزين الثابتة ضمنيًا باستخدام NULL (جميع البايت لها القيمة 0) ؛ القيمة الأولية لجميع المتغيرات الأخرى غير محددة.
إعلان متغير في c
يوفر التصريح عن المتغير تأكيدًا للمترجم بوجود متغير بالنوع والاسم المحددين بحيث يمكن للمترجم المضي قدمًا في التجميع الإضافي دون الحاجة إلى التفاصيل الكاملة حول المتغير. تعريف المتغير له معناه في وقت التجميع فقط ، يحتاج المترجم إلى تعريف متغير فعلي في وقت ربط البرنامج.
يعتبر التصريح عن المتغير مفيدًا عند استخدامك لملفات متعددة وتقوم بتحديد المتغير الخاص بك في أحد الملفات التي ستكون متاحة وقت ربط البرنامج. سوف تستخدم الكلمة الأساسية extern للإعلان عن متغير في أي مكان. على الرغم من أنه يمكنك التصريح عن متغير عدة مرات في برنامج C الخاص بك ، إلا أنه يمكن تعريفه مرة واحدة فقط في ملف أو وظيفة أو كتلة من التعليمات البرمجية.
مثال
جرب المثال التالي ، حيث تم الإعلان عن المتغيرات في الأعلى ، ولكن تم تعريفها وتهيئتها داخل الوظيفة الرئيسية -
#include <stdio.h> // Variable declaration: extern int a, b; extern int c; extern float f; int main () { /* variable definition: */ int a, b; int c; float f; /* actual initialization */ a = 10; b = 20; c = a + b; printf("value of c : %d \n", c); f = 70.0/3.0; printf("value of f : %f \n", f); return 0; }
عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -
value of c : 30 value of f : 23.333334
ينطبق نفس المفهوم على إعلان الوظيفة حيث تقدم اسمًا للوظيفة في وقت إعلانها ويمكن تعريفها الفعلي في أي مكان آخر. على سبيل المثال -
// function declaration int func(); int main() { // function call int i = func(); } // function definition int func() { return 0; }
Lvalues و Rvalues في C
يوجد نوعان من التعبيرات في لغة سي -
lvalue - التعبيرات التي تشير إلى موقع ذاكرة تسمى تعبيرات "lvalue". قد تظهر قيمة lvalue إما في الجانب الأيسر أو الأيمن من المهمة.
rvalue - يشير المصطلح rvalue إلى قيمة بيانات مخزنة في بعض العناوين في الذاكرة. rvalue عبارة عن تعبير لا يمكن تعيين قيمة له مما يعني أن rvalue قد تظهر على الجانب الأيمن ولكن ليس على الجانب الأيسر من المهمة.
المتغيرات هي قيم lvalues ولذلك قد تظهر على الجانب الأيسر من المهمة. القيم الحرفية الرقمية هي قيم rvalues ولذلك قد لا يتم تعيينها ولا يمكن أن تظهر على الجانب الأيسر. ألق نظرة على العبارات الصحيحة وغير الصالحة التالية -
int g = 20; // valid statement 10 = 20; // invalid statement; would generate compile-time error
تعليقات
إرسال تعليق