English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستعلم كيفية نقل متغير هيكل كمعامل إلى دالة. ستعلم كيفية إرجاع struct من الدالة باستخدام مثال.
مثل متغيرات النوع المدمج، يمكنك أيضًا نقل متغير هيكل إلى دالة.
نوصي بدراسة هذه الدروس قبل تعلم كيفية نقل هيكل إلى دالة.
هذه هي طريقة نقل هيكل إلى دالة
#include <stdio.h> struct student { char name[50]; int age; }; //原型函数 void display(struct student s); int main() { struct student s1; printf("ادخل الاسم: "); // قراءة النص المدخل من المستخدم حتى النهاية // النسخة المكررة من \n يتم التخلص منها scanf("%[^\n]%*c", s1.name); printf("أدخل العمر: "); scanf("%d", &s1.age); display(s1); // نقل هيكل كمعامل return 0; } void display(struct student s) { printf("\nعرض المعلومات\n"); printf("اسم: %s", s.name); printf("\nالعمر: %d", s.age); }
نتيجة الخروج
ادخل الاسم: Bond ادخل العمر: 13 عرض المعلومات الاسم: Bond العمر: 13
في هذا المكان، تم إنشاء متغير هيكل من نوع struct student س1. يتم نقل المتغير إلى دالة display() باستخدام display(s1).
هذه هي طريقة إرجاع هيكل من الدالة:
#include <stdio.h> struct student { char name[50]; int age; }; //原型函数 struct student getInformation(); int main() { struct student s; s = getInformation(); printf("\nعرض المعلومات\n"); printf("اسم: %s", s.name); printf("\nرقم الملف: %d", s.age); return 0; } struct student getInformation(); { struct student s1; printf("ادخل الاسم: "); scanf("%[^\n]%*c", s1.name); printf("أدخل العمر: "); scanf("%d", &s1.age); return s1; }
في هذا المثال، يتم استدعاء getInformation() باستخدام س = getInformation() لاستدعاء بيانات getInformation() المعلن. يعود بيانات getInformation() نوعها هو struct student. يتم عرض البيانات في دالة main().
لاحظ أن نوع العودة لـ getInformation() أيضًا هو struct student.
يمكنك أيضًا إرسال البيانات بالمراجع (مثل إرسال متغيرات النوع البنيوي البحتة) ونوصي بقراءةمرجعدليل
عند إرسال البيانات بالمراجع، سيتم إرسال عنوان الذاكرة الخاص بنوع البيانات إلى الدالة.
#include <stdio.h> typedef struct Complex { float real; float imag; } complex; void addNumbers(complex c1, complex c2, complex *result); int main() { complex c1, c2, result; printf("أدخل الرقم الأول:\n"); printf("الجزء الحقيقي: "); scanf("%f", &c1.real); printf("الجزء الموجود: "); scanf("%f", &c1.imag); printf("أدخل الرقم الثاني: "); printf("الجزء الحقيقي: "); scanf("%f", &c2.real); printf("الجزء الموجود: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("\nresult.real = %.1f\n", result.real); printf("result.imag = %.1f", result.imag); return 0; } void addNumbers(complex c1, complex c2, complex *result) { result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; }
نتيجة الخروج
أدخل الرقم الأول: الجزء الحقيقي: 5.8 الجزء الموجود: -3.4 أدخل الرقم الثاني: الجزء الحقيقي: 9.9 الجزء الموجود: -4.5 result.real = 15.7 result.imag = -7.9
في البرنامج أعلاه، يتم نقل عناصر البنية c1، c2 و عنوان النتيجة إلى وظيفة addNumbers(). هنا، يتم نقل النتيجة بكلمة مرادفة.
عندما يتم تغيير متغير النتيجة الداخلية في addNumbers()، يتم تغيير متغير النتيجة الداخلية في main() أيضًا.