Skip to content
Get App

Arrow Operator For Pointers To Structs | C Programming Tutorial

شرح استخدام معامل السهم (->) للوصول إلى أعضاء الهيكل عبر المؤشرات في لغة C مع أمثلة عملية.

Key Takeaways

  • معامل السهم (->) يسهل الوصول إلى أعضاء الهيكل عبر المؤشرات دون الحاجة لإلغاء المرجع يدوياً.
  • typedef يساعد في تبسيط تعريف المتغيرات من نوع الهيكل.
  • يمكن تخصيص مساحة ديناميكية للهياكل باستخدام malloc مع تضمين stdlib.h.
  • تغيير أعضاء الهيكل عبر المؤشر يؤثر مباشرة على الهيكل الأصلي الذي يشير إليه المؤشر.
  • فهم الفرق بين معامل النقطة ومعامل السهم ضروري للعمل مع الهياكل والمؤشرات في C.

What the video covers

  • تعريف هيكل (struct) باستخدام typedef لتسهيل الإعلان عن المتغيرات.
  • الوصول إلى أعضاء الهيكل باستخدام معامل النقطة عند التعامل مع متغير هيكل عادي.
  • إنشاء مؤشر إلى هيكل وتعيين عنوان هيكل موجود له.
  • استخدام معامل السهم (arrow operator) للوصول إلى أعضاء الهيكل عبر المؤشر.
  • تغيير قيم أعضاء الهيكل من خلال المؤشر باستخدام معامل السهم.
  • طباعة قيم أعضاء الهيكل باستخدام printf مع كل من المتغير العادي والمؤشر.
  • تخصيص مساحة ديناميكية للهيكل باستخدام malloc.
  • ضرورة تضمين مكتبة stdlib.h عند استخدام malloc.
  • شرح الفرق بين استخدام معامل النقطة ومعامل السهم مع المؤشرات.
  • توضيح كيفية التعامل مع المؤشرات والهياكل في لغة C بشكل عملي.

Answers

Questions about this video

ما هو الفرق بين معامل النقطة ومعامل السهم في لغة C؟

معامل النقطة يستخدم للوصول إلى أعضاء الهيكل مباشرة من متغير هيكل، بينما معامل السهم يستخدم للوصول إلى أعضاء الهيكل عبر مؤشر يشير إلى ذلك الهيكل.

كيف يمكنني تخصيص مساحة ديناميكية لهكيل في لغة C؟

يمكن تخصيص مساحة ديناميكية لهكيل باستخدام دالة malloc مع sizeof الهيكل، ويجب تضمين مكتبة stdlib.h لاستخدام malloc.

لماذا نستخدم typedef مع الهياكل في لغة C؟

typedef يسمح بتبسيط تعريف المتغيرات من نوع الهيكل بحيث لا نحتاج لكتابة كلمة struct في كل مرة نعلن فيها عن متغير من هذا النوع.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
في هذا الفيديو، سأشرح كيفية استخدام معامل السهم (arrow operator) في لغة C.
00:10
Speaker A
يسمح لي هذا المعامل بالوصول إلى متغيرات الأعضاء في هيكل (struct) عندما يكون لدي مؤشر يشير إلى ذلك الهيكل.
00:18
Speaker A
وهذا يختلف عن استخدام معامل النقطة أو معامل إلغاء المرجع (dereference) لإلغاء مرجع المؤشر أولاً ثم استخدام معامل النقطة بعد ذلك.
00:36
Speaker A
لذا، سأوضح لك كل هذه الخيارات هنا. أولاً، دعنا ننشئ هيكلًا (struct). سأكتب typedef struct بمتغيري int x و int y واسم point.
00:51
Speaker A
وسنقول أن هذا هيكل لنقاط ثنائية الأبعاد. أستخدم typedef هنا لأنها توفر عليّ كتابة كلمة struct قبل
01:00
Speaker A
كلمة point في كل مرة أريد فيها الإعلان عن متغير من نوع point. لنفعل ذلك الآن. هنا سأكتب point P1.
01:15
Speaker A
وهذا يعني الإعلان عن متغير نقطة فعلي يسمى P1. إنه ليس مؤشراً إلى هيكل. إنه هيكل في حد ذاته.
01:34
Speaker A
وللوصول إلى متغيرات الأعضاء، سنستخدم تدوين النقطة. سأكتب P1.x يساوي 3 و P1.y يساوي 2.
01:41
Speaker A
هذه هي الطريقة التي يمكننا بها الوصول إلى متغيرات الأعضاء وتعيين قيم لها. يمكننا استخدامها في التعبيرات أو استدعاءات الدوال أيضاً.
02:00
Speaker A
هنا سأكتب printf لـ P1 بالنسبة المئوية d، النسبة المئوية d/n.
02:24
Speaker A
وسنقوم بطباعة P1.x و P1.y. وإذا قمت بحفظ هذا وتشغيله، فسنحصل على الزوج المتوقع كخرج 3 و 2.
02:42
Speaker A
هذا ما يخص العمل مع متغير هيكل عادي. ماذا لو كان لدي مؤشر إلى هيكل؟ هنا سأكتب point* P2.
02:59
Speaker A
وما لدي الآن هو مؤشر إلى هيكل. لذا سيقوم بتخزين عنوان الذاكرة الخاص بهيكل ما.
03:08
Speaker A
سيتعين علي تعيين عنوان ذاكرة لهيكل موجود له، أو تخصيص مساحة ديناميكية لهيكل، لكي أتمكن فعلياً من الوصول إلى متغيرات الأعضاء عبر هذا المؤشر.
03:34
Speaker A
لنقم بالخطوة الأولى. لنقم بتعيين عنوان ذاكرة P1 للمؤشر P2. هنا سأكتب P2 يساوي &P1.
03:46
Speaker A
الآن نقول إن P2 يشير إلى P1. ويمكنني الآن الوصول إلى متغيرات أعضاء الهيكل باستخدام تدوين السهم.
03:51
Speaker A
يمكنني أن أكتب هنا P2->x يساوي مثلاً خمسة الآن، و P2->y يساوي ربما أربعة الآن.
04:07
Speaker A
وما أفعله هنا هو تغيير متغيرات الأعضاء x و y لأي شيء يشير إليه P2. وفي هذه الحالة، هو P1 لأننا أسندنا إليه عنوان ذاكرة P1.
04:31
Speaker A
الآن إذا قمت بطباعة P1، سأجد أنها قد تم ضبطها بالفعل على هذه القيم هنا، خمسة وأربعة.
04:38
Speaker A
لذا سأحفظ هذا هنا الآن وأقوم بتشغيله، ويجب أن نحصل على أن P1 في المرة الثانية التي تتم فيها طباعتها هي خمسة وأربعة.
04:49
Speaker A
وهذا ما حصلنا عليه. الآن، يمكننا أيضًا الوصول إلى متغيرات الأعضاء هذه هنا x و y عبر P2.
04:59
Speaker A
لذا، يمكنني القول هنا printf ويمكننا القول ربما P2
05:14
Speaker A
وسأقول هنا P2 سهم x و P2 سهم y. وإذا قمت بحفظ هذا هنا وتشغيله، سنجد أن هذه هي نفس الشيء.
05:30
Speaker A
لذا فإن ترميز السهم هذا يمنحنا الوصول إلى متغيرات الأعضاء الخاصة بالهيكل الذي يشير إليه هذا المؤشر في هذه الحالة.
05:45
Speaker A
لذا يمكننا القيام بالمزيد من الأشياء هنا. لننشئ مؤشرًا ونخصص مساحة ديناميكية للهيكل.
06:06
Speaker A
لذا هنا سأقول point* P3 وسأقول P3 يساوي malloc(sizeof(point)).
06:20
Speaker A
لذا، لأنني أستخدم دالة malloc، سأحتاج إلى تضمين مكتبة stdlib.h.
06:32
Speaker A
تسمح لي هذه الدالة بتخصيص مساحة ديناميكية للأشياء بما في ذلك الهياكل.
Topics:لغة Cمعامل السهمالمؤشراتالهياكلtypedefmallocتخصيص ديناميكيبرمجة Cدوال Cبرمجة هياكل

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries and speaker detection. 30 minutes free.

Or transcribe another YouTube video here →