القائمة الرئيسية

الصفحات

C - Variables / المتغيرات

 المتغير ليس سوى اسم يُعطى لمنطقة التخزين التي يمكن لبرامجنا معالجتها. كل متغير في 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

               

تعريف متغير في ج

يخبر تعريف المتغير المترجم عن مكان وكمية التخزين التي سيتم إنشاؤها للمتغير. يحدد تعريف المتغير نوع البيانات ويحتوي على قائمة بمتغير واحد أو أكثر من هذا النوع على النحو التالي -

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) ؛ القيمة الأولية لجميع المتغيرات الأخرى غير محددة.

إعلان متغير في ج

يوفر التصريح عن المتغير تأكيدًا للمترجم بوجود متغير بالنوع والاسم المحددين بحيث يمكن للمترجم المضي قدمًا في التجميع الإضافي دون الحاجة إلى التفاصيل الكاملة حول المتغير. تعريف المتغير له معناه في وقت التجميع فقط ، يحتاج المترجم إلى تعريف متغير فعلي في وقت ربط البرنامج.

يعتبر التصريح عن المتغير مفيدًا عند استخدامك لملفات متعددة وتقوم بتحديد المتغير الخاص بك في أحد الملفات التي ستكون متاحة وقت ربط البرنامج. سوف تستخدم الكلمة الأساسية 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     
الصفحة التالية                                                 الصفحة السابقة                                              
هل اعجبك الموضوع :

تعليقات