أهلا ومرحبا بكم مرة أخرى. دعنا نواصل مناقشتنا حول الهياكل
ونتحدث عن كيفية ارتباطها بالمصفوفات.
تحدثنا عن كيفية تشابه الهياكل مع المصفوفات وأنه يمكنك تخزين أكثر من قيمة واحدة
، لكنها مختلفة لأنه يمكن أن يكون لديك أنواع بيانات مختلفة ويمكنك
تجميعها بهذه الطريقة.
ولكن يمكنك أيضًا في الواقع أن يكون لديك مثل مصفوفات الهياكل.
لقد رأيت مدى فائدة البنية وتمكينك من تجميع العناصر ذات الصلة معًا بشكل
منطقي ، وقد رأينا ذلك. نحن نعرف كيفية تحديد بنية
بعناصر مختلفة باستخدام الكلمة الأساسية الهيكلية ، باستخدام
اسم العلامة.
ونعرف أيضًا كيفية إنشاء متغير من هذا النوع.
لأن الهيكل الأساسي هو نوع جديد من البيانات التي يمكنك استخدامها.
وبعد ذلك يمكنك الوصول إلى عناصر هيكل باستخدام عامل اختيار الأعضاء.
حسنًا ، ماذا لو كنت تريد إنشاء هياكل متعددة
داخل مصفوفة. تستطيع فعل ذلك.
لذلك على سبيل المثال ، من الضروري فقط تتبع متغير واحد بدلاً
من ثلاثة لكل تاريخ يستخدمه البرنامج ، وهذه هي ميزة البنية.
إذا أردنا التعامل مع 10 تواريخ مختلفة في أحد البرامج
، فسيتعين علينا فقط تتبع 10 متغيرات مختلفة بدلاً من 30.
لأن تذكر أن البنية تحتوي على ثلاثة متغيرات داخل نفسها.
10 للمتغيرات المختلفة لا يزال نوعًا ما كثيرًا ، لذا
فهي ليست الطريقة المثلى للذهاب. ربما تريد إنشاء مصفوفة.
لأن لديك 10 أنواع من نفس الشيء تمامًا كما لو كان لديك 10
ints نفس الشيء. سيكون هناك نوع هيكل فقط.
لذا فإن الطريقة الأفضل للتعامل مع التواريخ
العشرة المختلفة تتضمن الجمع بين ميزتين قويتين للغة البرمجة c ، الهياكل
والمصفوفات.
يمكنك استخدامها معًا لجعلها أكثر قوة.
لذلك من الصحيح تمامًا تحديد مجموعة من الهياكل. يعتبر
مفهوم مصفوفة الهياكل مفهومًا قويًا ومهمًا للغاية في c ، لذا عليك الانتباه جيدًا.
إن إعلان مصفوفة من البنى يشبه تمامًا التصريح عن أي نوع آخر من المصفوفات.
أنت تحدد نوعها فقط حتى يحدث أنها نوع هيكل.
لذلك إذا كنت تريد إنشاء مصفوفة من الهياكل المسماة
بالتاريخ ، يمكنك أن تقول تاريخ
الهيكل ثم اسم المتغير ثم تستخدم الأقواس ، تمامًا كما
تستخدم الأقواس للمصفوفات الأخرى ، يجب عليك تحديد الحجم.
في هذه الحالة ، إذا قمنا بإنشاء 10 مثيلات أو 10 عناصر من نوع بنية
التاريخ ، فسنقول 10 داخل هذه الأقواس للإشارة.
لذلك سيحدد هذا مصفوفة تسمى التواريخ ، والتي تتكون من 10 عناصر.
يتم تعريف كل عنصر داخل المصفوفة بتاريخ هيكل من نوع bf ،
والذي يحتوي على ثلاثة أعضاء.
لذا فإن ما تفعله هو أنك تقوم بتخزين 30 مجموعة
مختلفة من البيانات ، 30 عنصر بيانات مختلف.
لتحديد أعضاء مصفوفة من الهياكل ، يمكنك تطبيق
نفس القاعدة التي تستخدمها للبنى الفردية.
يمكنك تقديم اسم الهيكل باستخدام عامل التشغيل النقطي ثم باسم العضو.
يعد الرجوع إلى عنصر هيكل معين داخل المصفوفة أمرًا طبيعيًا تمامًا.
لتعيين التاريخ الثاني داخل مصفوفة التواريخ إلى 8 أغسطس 1986
، كل ما عليك فعله هو تحديد اسم المصفوفة وتواريخي
وتحديد الفهرس. نحدد هنا التاريخ الثاني.
تذكر أن المصفوفات تستند إلى 0. لذلك نقول 1 ، sub-1.
ثم إذا أردنا الوصول إلى عناصر من عنصر المصفوفة
هذا أو أعضاء هذا الهيكل لهذا العنصر ، فإننا نقول dot month.
لذلك سيعطينا هذا العنصر الثاني في مصفوفة التواريخ الخاصة بي.
قيمة الشهر لهذا النوع من البنية ، وهنا سنقوم بتعيينها بقيمة 8.
ثم إذا أردنا الوصول إلى اليوم ، فسنحدد اليوم الثامن
لأنه الثامن من آب (أغسطس). وأخيرًا ، بالنسبة للسنة ، يمكننا أن نقول
إن النقطة العام تساوي 1986.
هذه هي الطريقة التي يمكنك بها إسناد العنصر الثاني في مصفوفة التواريخ الخاصة
بي ، إلى المتغيرات الثلاثة المختلفة لأنها من النوع هيكل ، هيكل التاريخ.
يجب أن تلاحظ أنه في الحقيقة لا يختلف.
الاختلاف الوحيد هنا هو أن لديك نقطة. عادة ، ستقول فقط التواريخ الفرعية
1 وسيكون ذلك لأنه لا يمكنك تعيين سوى متغير واحد اعتمادًا على
نوع تلك المصفوفة.
لكن في هذه الحالة ، يمكنك قول sub-1 بثلاثة متغيرات مختلفة لأن
هذه هي العناصر الثلاثة داخل البنية.
تهيئة مجموعة من الهياكل.
يشبه بدء المصفوفات التي تحتوي على بنى عملية تهيئة المصفوفات
متعددة الأبعاد.
تذكر ، مع المصفوفات متعددة الأبعاد ، فإننا نتبع البنية المحددة
مع الأقواس المتعرجة في الخارج ثم الأقواس المتعرجة في الداخل لتمثل كل صف.
كانت الأقواس المتعرجة الموجودة في الداخل اختيارية في الواقع
، لكنها جعلتها أكثر قابلية للقراءة. ولذا أحب أن أتبع هذه الاتفاقية.
في هذا المثال ، نقوم بإنشاء التواريخ الخاصة بي من تاريخ بنية
النوع ، ستكون بحجم 5. وبعد ذلك سنقوم بتهيئة العناصر الثلاثة الأولى فقط.
تمامًا مثل المصفوفة متعددة الأبعاد ، لدينا تلك الأقواس
المتعرجة بالداخل. وبالتالي فإن العنصر الأول في مصفوفة
التواريخ هو فهرس تحت الصفر. سنقول أن الشهر هو
12 ، والتاريخ هو 10 والسنة 1975.
ثم سنفعل الشيء نفسه بالنسبة للعنصر الأول. سنقول 12 30 1980.
وبالنسبة للعنصر الثالث سنقول 11 15 2005.
ولأننا لم نوفر العنصرين الآخرين في مصفوفة التواريخ
الخاصة بي ، فلن تتم تهيئة هذين العنصرين على الإطلاق.
لذلك سيحدد هذا التواريخ الثلاثة الأولى.
في المصفوفة ، تأريخي هو 12 10
1975 و 12 30 1980 و 11 15 2005.
الفترات الداخلية للأقواس اختيارية ، تمامًا كما هو الحال في منطقة متعددة الأبعاد فهي اختيارية أيضًا.
لكن مرة أخرى ، يجعل الأمر أسهل للقراءة ، ويسهل متابعته باستخدام تلك الأقواس الداخلية
، وسأتبع هذا التقليد.
لذلك يمكنك القيام بذلك إذا كنت ترغب
في التخلص من الأقواس ، ولكن من الصعب اتباعها لأنك الآن
لديك فقط فواصل ، مفصولة بفواصل أو عناصر مفصولة بفواصل ويمكن أن يكون الأمر
محيرًا للغاية إذا كنت تفعل الكثير من هؤلاء.
يجب عليك تعيين ذلك بشكل صحيح ، لنفترض أنني في العنصر الرابع للفاصلة
الرابعة ، حسنًا ، هذا سيكون العنصر الثاني من المصفوفة ، من
الصعب متابعته ، لذا استخدم تلك الأقواس الموجودة داخل الأقواس المتعرجة.
إذا كنت تريد تهيئة العنصر الثالث فقط من المصفوفة إلى قيمة محددة
، فيمكنك تحديد التواريخ الفرعية 5.
ما زلت تنشئ المصفوفة هنا.
ما زلت تعلن عن المتغير وتضبط الحجم على خمسة.
لكن داخل الأقواس المتعرجة
، تقول اثنين من الأقواس الداخلية
وستقوم بتهيئة 2 إلى 12 10 1975.
لذلك سترى الأقواس المربعة التي تمثل العنصر الذي تريد
تهيئته ، ثم عامل الإسناد يساوي ثم داخل الأقواس المتعرجة
، تقوم بتهيئة الشهر واليوم والسنة للعناصر داخل
الهيكل.
لذلك يمكنك تحديد العنصر الذي تريد تهيئته بالضبط أيضًا.
إذا كنت تريد فقط تعيين الشهر واليوم للعنصر الثاني من مصفوفة التواريخ الخاصة بي على 12 و 30 ،
فيمكنك القيام بشيء مشابه جدًا.
ما عليك سوى عمل فاصلة لفصل كل سمة.
أنت لا تريد تحديد السنة فعليًا ، لذا فأنت تريد أن تكون قادرًا على استخدام تلك الأقواس المتعرجة.
يمكنك القول أن النقطة تساوي
12 نقطة في اليوم الواحد يساوي 30.
ومرة أخرى ، تبدو هذه الصيغة مشابهة جدًا لتهيئة متغيرات
البنية في مكان آخر.
الاختلاف الوحيد هنا هو أنه مصفوفة ، يجب عليك تحديد فهرس المصفوفة
، لكن بناء جملة مماثل.
ماذا عن الهياكل التي تحتوي على مصفوفات.
العناصر الموجودة داخل الهيكل التي تحتوي على مصفوفة.
من الممكن أيضًا العثور على الهياكل التي تحتوي على مصفوفة كعضو.
قد يكون هذا مفيدا.
الاستخدام الأكثر شيوعًا هو إعداد مجموعة من الأحرف داخل بنية.
نحن نستخدم مصفوفات char بشكل مناسب تمامًا للسلاسل.
لذلك سيكون من الشائع جدًا أن تحتوي البنية على سلسلة بشكل أساسي ،
مصفوفة الأحرف.
لنفترض أنك تريد تحديد بنية تسمى الشهر
تحتوي على أعضائها وعدد أيام الشهر بالإضافة إلى
اختصار مكون من ثلاثة أحرف لاسم الشهر.
حسنًا ، هذا هو المكان الذي يمكننا فيه استخدام مصفوفة المحارف. يمكننا القول شهر الهيكل.
نحن نعرف كيف نحدد الهيكل. مرة أخرى ، هذا لا يخصص أي ذاكرة.
هذه هي الطريقة التي يتم بها تعريف الهيكل. هذه هي العناصر الموجودة بداخله.
نحن هنا نستخدم الكلمة الأساسية الهيكلية. نقول اسم الهيكل. اسم العلامة هو شهر ، ثم لدينا
هذا القوس المتعرج الأيسر ثم نحدد العناصر.
لدينا عنصر واحد يمثل عددًا صحيحًا يمثل عدد الأيام التي يكون لدينا فيها فاصلة منقوطة في النهاية.
ثم لدينا مصفوفة أحرف ، اسم حرف ثالث ، لذا
الحجم ثلاثة لأنه يتكون من ثلاثة أحرف.
ثم ننهي البنية باستخدام القوس المتعرج الأيمن في الفاصلة المنقوطة.
لكن تذكر أن الشخصيات عبارة عن مصفوفات وهي مرتبطة ارتباطًا وثيقًا بالمؤشرات كما نعلم ذلك الآن.
ولكن يمكنك بسهولة أن تحتوي الهياكل على مصفوفات بمجرد
وضعها كعنصر عضو.
وبالتالي فإن هذا يُنشئ بنية شهرية تحتوي على
عدد صحيح من الأعضاء يسمى عدد الأيام وعضو شخصي يُدعى الاسم.
اسم العضو هو في الواقع مصفوفة من ثلاثة أحرف ، واضحة جدًا.
إذن كيف يمكنك الوصول إليه بالفعل. حسنًا ، عليك أولاً إنشاء المتغير الخاص بك.
سيُنشئ المتغير ذاكرة للعناصر الموجودة داخل البنية ثم تريد
فقط تعيين الحقول المناسبة داخل متغير 8 أشهر ، مصفوفة
الأحرف لأن هذا هو اسمها. كان لدينا اسم وعدد
الأيام. هنا يسمى الاسم والمثال يسمى الشهر.
حسنًا ، الشهر هو نوع المتغير ثم الاسم هو نوع العنصر ، لذا هذا صحيح.
لذلك نحن هنا ننشئ بنية. إنه من نوع الشهر.
إنه اسم المتغير شهر. لا نقوم بتهيئته بأي شيء.
حددنا على الفور عدد شهر من 31 يومًا.
نحن نستخدم عامل اختيار عضو النقطة.
ثم نريد التخصيص لمصفوفة المحارف ، لا يمكننا
التخصيص مباشرة لمصفوفة المحارف.
يجب عليك إجراء مقارنة str أو شيء ما إذا كنت تريد التوقيع على كل شيء. ويمكنك فعل ذلك.
ليس عليك استخدام هذه الفهارس. يمكنك أن تقول str انسخ
شهرًا فاصلة اسم نقطة ثم j a n بين علامتي
اقتباس أو يمكنك القيام بذلك حيث يمكنك الوصول إلى عناصر
المصفوفة عبر الفهرس.
نحن هنا نقول اسم نقطة شهر لأنه يتعين علينا الوصول
إلى اسم متغير عضو أو عنصر عضو.
ثم داخل الأقواس ، نحدد فهرس المصفوفة.
سنجده يشير إلى الحرف الأول في مصفوفة j ، والثاني واحد أ ، وثالث واحد ن.
سترى هذا النحو إذا كنت تقوم بعمل عدد صحيح
وزوجي وعائم. عادةً ، عندما يكون لديك مجموعة
أحرف ، ستستخدم وظيفة str stir copy وتعيين كل شيء بعلامات اقتباس مزدوجة.
يمكنك أيضًا تهيئة المتغير لنفس القيم عن طريق القيام بشيء
مشابه جدًا عندما تقوم بتعريف المتغير. فقط داخل الأقواس المتعرجة ، لأنها
مصفوفة ، يمكن أن يكون لديك أقواس داخلية
مجعدة ثم علامات الاقتباس المفردة حول كل حرف.
ويمكنك إعداد هياكل لمدة 12 شهرًا داخل مصفوفة لتمثيل كل شهر من العام.
يمكننا الآن إنشاء متغير
الشهر ، وهو عبارة عن مصفوفة بحجم 12 من النوع Struct month ، والتي
يمكن أن تمثل كل شهر.
ثم لكل شهر ، يمكننا قضاء عدد الأيام ثم الاختصارات الخاصة بالشهر.
لذا فإن استخدام هذين المفهومين القويين
للمصفوفات والبنى مفيد جدًا جدًا.
يمكن أن تحتوي الهياكل على العديد من العناصر
، لذلك يمكن أن تكون في الواقع بنية من المصفوفات والعناصر داخل
الهيكل يمكن أن تكون مصفوفة.
وسنتحدث بعد ذلك عن كيفية استخدام الهياكل لاحتواء عناصر أخرى مثل المؤشرات.
لكن سترى أن الهياكل يمكنها تخزين أي نوع من البيانات في العديد
من أنواع البيانات المختلفة.
ومن المفيد جدًا استخدام مفهوم المصفوفة.
اتمنى ان يكون ذلك مفيدا. مرة أخرى ، سيكون لدينا تحدي لعرض
بعض هذه المفاهيم وإحضار بعض الأمثلة داخل كتل
التعليمات البرمجية لاحقًا. شكرًا لك.