register وconst
تلميحات وعدم القابلية للتغيير
register وconst درس مجاني في C Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C Academy 4 دروس في المجموع.
تلميح register
يقترح register الاحتفاظ بمتغير في مسجل CPU لزيادة السرعة. لكنه مجرد تلميح، وتتجاهله المصرّفات الحديثة عادةً.
#include <stdio.h>
int main(void) {
register int i;
int sum = 0;
for (i = 0; i < 5; i++)
sum += i;
printf("sum = %d\n", sum);
return 0;
}لا يمكن الحصول على عنوانه
لأن متغير register قد لا يكون موجودًا في الذاكرة، لا يجوز الحصول على عنوانه باستخدام &.
#include <stdio.h>
int main(void) {
register int x = 10;
printf("x = %d\n", x);
return 0;
}لماذا نادرًا ما يُستخدم register اليوم
تضع المصرّفات المحسِّنة المتغيرات كثيرة الاستخدام في المسجلات أصلًا. أما الكلمة المفتاحية فأصبحت تاريخية في الغالب.
#include <stdio.h>
int main(void) {
int product = 1;
for (register int i = 1; i <= 4; i++)
product *= i;
printf("product = %d\n", product);
return 0;
}المؤهل const
يجعل const المتغير للقراءة فقط بعد تهيئته. وتؤدي محاولة تغييره إلى خطأ في الترجمة.
#include <stdio.h>
int main(void) {
const int DAYS = 7;
printf("DAYS = %d\n", DAYS);
return 0;
}توضح الثوابت القصد
يجعل استخدام const للقيم الثابتة الكود أوضح ويحميه من التغييرات غير المقصودة.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
double r = 2.0;
printf("area = %.2f\n", PI * r * r);
return 0;
}const مع المؤشرات
يعني const int *p أنه لا يمكن تغيير القيمة التي يشير إليها المؤشر من خلال p. لكن يمكن أن يتغير المؤشر نفسه.
#include <stdio.h>
int main(void) {
int x = 5;
const int *p = &x;
printf("*p = %d\n", *p);
return 0;
}مؤشر ثابت
يعني int * const p أنه لا يمكن تغيير المؤشر، لكن يمكن تغيير القيمة التي يشير إليها.
#include <stdio.h>
int main(void) {
int x = 5;
int * const p = &x;
*p = 9;
printf("x = %d\n", x);
return 0;
}معاملات الدوال من نوع const
يؤكد وضع const على معامل أن الدالة لن تعدّله، مما يساعد المستدعين على فهم السلوك.
#include <stdio.h>
void show(const int n) {
printf("n = %d\n", n);
}
int main(void) {
show(42);
return 0;
}غير قابل للتغيير حسب التصميم
يُفضَّل استخدام const لأي قيمة ينبغي ألا تتغير. فهو يكشف الأخطاء أثناء الترجمة.
#include <stdio.h>
int main(void) {
const int LIMIT = 100;
int x = 90;
if (x < LIMIT)
printf("under limit\n");
return 0;
}دمج const مع المتغيرات العامة
يكون المتغير العام من نوع const ثابتًا مشتركًا آمنًا ومتاحًا في الملف بأكمله.
#include <stdio.h>
const int VERSION = 2;
int main(void) {
printf("VERSION = %d\n", VERSION);
return 0;
}استخدام register وconst معًا
يمكنك حتى تحديد عدّاد الحلقة بالطريقتين، مع أن const هنا يعني أن جسم الحلقة يجب ألا يغيّره.
#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 0; i < 3; i++) {
const int doubled = i * 2;
sum += doubled;
}
printf("sum = %d\n", sum);
return 0;
}تحقق سريع
اختبر مدى فهمك لـ register وconst.
مراجعة: register وconst
لقد تعلمت مؤهلين اثنين.
- يشير
registerإلى تخزين المتغير في مسجل، لكن يجري تجاهله عادةً - لا يمكنك الحصول على عنوان متغير من نوع register
- يجعل
constالقيمة للقراءة فقط - للثبات مع المؤشرات شكلان: قيمة ثابتة مقابل مؤشر ثابت
- استخدم
constبسخاء لتعزيز الأمان
الأسئلة الشائعة
هل درس «register وconst» مجاني؟
نعم — نص درس «register وconst» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C Academy 4 دروس في المجموع.
ماذا ستتعلم في «register وconst»؟
تلميحات وعدم القابلية للتغيير تتمرن على C Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C Academy؟
لا تُشترط خبرة سابقة. C Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «register وconst»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C Academy هذا؟
نعم. كل درس في C Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- auto والنطاق المحلي
- المتغيرات static
- extern والعالمي
- register وconst