صفيف العودة من الوظيفة C ++

Return Array From Function C



المصفوفات عبارة عن حاويات محددة لها قيم من نفس نوع البيانات. تؤدي الوظائف في C ++ عمليات على المصفوفات ، ثم تُعاد هذه المصفوفات إلى الوظيفة الرئيسية. هناك طرق عديدة لوصف هذه الظاهرة. في هذا الدليل ، يتم شرح بعض الطرق الشائعة:

استخدم المؤشرات لإرجاع المصفوفة الثابتة

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







Int * وظيفة ()



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







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

كثافة العمليات*المؤشر=وظيفة()؛

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



لرؤية إخراج المصفوفة يتم إرجاعه من خلال الوظيفة ، نحتاج إلى الوصول إلى محطة Ubuntu في حالة Linux. هذا بسبب إمكانية الوصول إلى الإخراج من خلال محطة Linux. في Linux ، نحتاج إلى مترجم لتشغيل أكواد C ++ المكتوبة في أي محرر نصوص. يتم هذا التجميع من خلال G ++. يتم استخدام -o لتخزين الإخراج في ملف. هنا ، نحتاج إلى ملف الإخراج وملف الكود المصدري. بعد التجميع ، سننفذ الكود:

$g ++ -أوfile1 file1.c
$./ملف 1

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

إرجاع الصفيف المخصص ديناميكيًا باستخدام المؤشرات

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

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

كثافة العمليات*وظيفة()

بعد إعلان الوظيفة ، يتم التصريح عن المصفوفات ديناميكيًا:

كثافة العمليات*مجموعة مصفوفة= الجديد int [100]؛

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

الآن ، ضع في اعتبارك الوظيفة الرئيسية. لقد قمنا باستدعاء الوظيفة. عندما يتم إرجاع المصفوفة ، نضيف متغير نوع مؤشر صحيح لقبول القيمة.

كثافة العمليات*المؤشر=وظيفة()؛

تتم طباعة القيم التي تم تخزينها في الصفيف يدويًا. يتم الحصول على المخرجات من خلال طريقة التجميع والتنفيذ.

مصفوفة الإرجاع باستخدام التراكيب

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

عينة الهيكل
{
Int arr[100]؛
}؛

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

هيكل عينة func(intن)

الآن ، بالانتقال إلى البرنامج الرئيسي ، قمنا بإنشاء كائن للوصول إلى المصفوفة من خلال هذا:

عينة الهيكل x؛

بعد تهيئة الكائن ، تُضاف قيمة إلى المتغير الذي نريد إدخال الأرقام إليه في المصفوفة. في استدعاء الوظيفة ، سنمرر القيمة في المعلمة:

X=وظيفة(ن)؛

سيكون لدينا العرض باستخدام حلقة for. يتم عرض القيم من خلال الكائن المعلن في بداية البرنامج الرئيسي:

يشير الإخراج إلى ظهور 6 قيم في النتيجة حيث قمنا بإدخال 6 أرقام في البرنامج.

صفيف العودة باستخدام Std

يستخدم C ++ العديد من الطرق لإرجاع مصفوفة من الوظيفة. واحد منهم من خلال std :: array. إنه قالب الهيكل. توفر هذه الميزة أيضًا وظيفتين أخريين هما الحجم () والفارغ (). يتم إرجاع اسم مصفوفة يشير إلى أن المصفوفة بأكملها قد عادت إلى البرنامج الرئيسي. هنا ، سنضيف مجموعة ملف رأس. بالإضافة إلى المكتبة ، تحتوي على جميع وظائف المصفوفة.

#يشمل

مجموعة مصفوفة<intو10>وظيفة()

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

arr=وظيفة()؛

مرة أخرى ، سيتم استخدام حلقة for لعرض قيم الصفيف. نلاحظ الإخراج من الصورة المعروضة أدناه. نظرًا لأننا استخدمنا 10 أحجام ، فسيتم إدخال 0 رقم. ومن ثم ، يتم عرض هذه:

إرجاع صفيف من خلال حاوية ناقل

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

الانتقال نحو الوظيفة ، حيث يكون نوع الإرجاع أيضًا متجهًا int ويحتوي أيضًا على مؤشر متجه كوسيطة في المعلمة. يتم تقديم مصفوفة باسم temp هنا:

المتجه<int>اضرب صفيف بواسطة اثنين(مقدار ثابتالمتجه<int> *arr)

ستقوم الوظيفة بضرب عناصر المصفوفة في اثنين من خلال استخدام الدالة tmp.push_back (). ثم قم بإرجاع tmp. سيقبل متغير النوع التلقائي قيم المصفوفة من الوظيفة. تحتوي المصفوفة على العناصر الموجودة بها.

يظهر الإخراج عمل الحاوية المتجهة.

استنتاج

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