الانتقال إلى المحتوى الرئيسي

أمثلة وطرق إرجاع هيكل من دالة في ج

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

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

هناك طريقة أخرى لإرجاع بنية من دالة وهي استخدام قيمة الإرجاع للدالة. في هذه الحالة ، تقوم الوظيفة بإرجاع الهيكل بأكمله. يمكن للمبرمج قبول القيمة التي تم إرجاعها واستخدامها في البرنامج الرئيسي. هذه الطريقة مريحة عندما تريد إرجاع نتيجة معالجة الهيكل دون تغيير الهيكل نفسه.

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

  1. أمثلة على إعادة هيكل في ج
  2. إعادة الهيكل عبر الذاكرة الديناميكية
  3. إرجاع هيكل من خلال صفيف
  4. إرجاع هيكل عبر مؤشر
  5. إعادة الهيكل عبر بيان الإرجاع
  6. إرجاع هيكل عبر متغير عمومي
  7. سؤال وجواب
  8. ما هو نوع من قيمة الإرجاع يجب أن تكون محددة للدالة التي ترجع مؤشر إلى بنية?
  9. هل هناك أي قيود على حجم هيكل عاد?
  10. كيف يمكنني إرجاع الهيكل الذي يحتوي على مجموعة من وظيفة?

أمثلة على إعادة هيكل في ج

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

int height;

  1. r.height = height;

return r;

}

int calculateArea(Rectangle r) {

return r.width * r.height;

int main() {

Rectangle rect = createRectangle(5, 10);

int area = calculateArea(rect);

", rect.width);

printf("Height: %d

", rect.height);

printf("Area: %d

", area);

return 0;

}

В этом примере функция createRectangle создает структуру Rectangle с заданными значениями ширины и высоты и возвращает ее. ثم تأخذ دالة منطقة الحساب بنية المستطيل كوسيطة وتحسب مساحة المستطيل. أخيرا ، في الوظيفة الرئيسية ، نقوم بإخراج قيم عرض المستطيل وارتفاعه ومساحته.

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

إعادة الهيكل عبر الذاكرة الديناميكية

إحدى طرق إرجاع بنية من دالة في ج هو استخدام الذاكرة الديناميكية. يتيح لك ذلك إنشاء بنية داخل الوظيفة وإعادتها دون فقد البيانات بعد الخروج من الوظيفة.

لإرجاع البنية عبر الذاكرة الديناميكية ، يجب تنفيذ الخطوات التالية:

تحديد الهيكل المراد إرجاعه. على سبيل المثال ، الهيكل

شخص

مع الحقول

الاسم

    مجانا (شخص) ؛ / / تحرير الذاكرة المخصصة

مجانا()

. هذا سيمنع تسرب الذاكرة.

يعد إرجاع بنية عبر الذاكرة الديناميكية طريقة مرنة وفعالة لنقل البيانات بين وظائف سي. ومع ذلك ، تحتاج إلى توخي الحذر ومراقبة الاستخدام الصحيح للذاكرة المخصصة.

إرجاع هيكل من خلال صفيف

هناك طريقة أخرى لإرجاع بنية من دالة في ج وهي استخدام مصفوفة.

للقيام بذلك ، يمكنك إعلان صفيف يتم فيه تخزين قيم كل حقل من الهيكل.

بعد ذلك ، يمكن للوظيفة ملء هذه المصفوفة بالقيم وإعادتها إلى المتصل.

على سبيل المثال ، ضع في اعتبارك بنية الشخص مع حقول الاسم والعمر:

اكتببنية الدفاع {

اسم الحرف [50];

كثافة العمليات العمر;

} شخص;

بعد ذلك ، يمكنك إعلان وظيفة تملأ المصفوفة ببيانات من الهيكل:

ملء الفراغ (شخص * صفيف) {

ستركبي (صفيف- > الاسم ، "جون");

صفيف - > العمر = 25;

}

ويمكنك استدعاء هذه الوظيفة عن طريق تمريرها مؤشر إلى الصفيف الذي سيتم ملؤه:

شخص شخصي [1];

فيلبيرسوناري (بيرسوناري);

بعد تنفيذ وظيفة فيلبيرسوناراي () ، سيتم ملء مجموعة بيرسوناراي مع قيم بنية الشخص.

والآن يمكنك استخدام هذه القيم في مزيد من تنفيذ البرنامج.

أيضا ، للراحة ، يمكنك تحديد وظيفة برينتبرسون () ، والتي سوف إخراج قيم حقول الهيكل:

طباعة باطلة (شخص * شخص) {

برينتف ("الاسم: ٪ ق

"،الشخص- > الاسم);

برينتف ("العمر: ٪ د

"،شخص - > العمر);

}

ثم استدعاء هذه الوظيفة عن طريق تمرير عنصر صفيف إليها:

برينتبرسون (&بيرسوناري [0]);

وبالتالي ، باستخدام مصفوفة لإرجاع الهيكل ، يمكننا نقل البيانات بسهولة من الوظيفة إلى البرنامج الرئيسي ومعالجتها بشكل أكبر.

إرجاع هيكل عبر مؤشر

في ج ، من الممكن إرجاع بنية من دالة حسب القيمة ، ولكن في بعض الحالات قد يكون من الأفضل إرجاع بنية من خلال مؤشر. هذا يتجنب الحاجة إلى نسخ الهياكل الكبيرة ويقلل من الحمل على الذاكرة ووقت المعالج.

يتم إرجاع الهيكل عبر مؤشر على النحو التالي:

حدد البنية التي تريد إرجاعها من الوظيفة:

اكتببنية الدفاع {

معرف كثافة العمليات;

اسم الحرف [50];

تعويم الراتب;

} موظف;

تحديد وظيفة من شأنها أن تعود هيكل عبر مؤشر:

باطل جيتموظف (موظف* إمب) {

خطة الإدارة البيئية - > معرف = 1;

ستركبي (إمب->اسم ، "جون دو");

خطة الإدارة البيئية - > الراتب = 5000.0;