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

كيفية تمرير صفيف أحادي البعد إلى دالة في ج

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

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

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

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

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

المعلمات وظيفة في اللغة ج

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

يتم الإعلان عن معلمات الوظيفة في رأس الوظيفة كقائمة بأسماء المتغيرات مفصولة بفواصل. يمكن أن تحتوي الدالة على صفر أو أكثر من المعلمات.

مثال على إعلان وظيفة مع المعلمات:

الفراغ دوسوميثينغ (إنت بارام1 ، تعويم بارام2) {

// رمز الوظيفة

}

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

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

مثال على استخدام معلمات الوظيفة:

حساب كثافة العمليات (رقم 1، رقم 2) {

رقم الإرجاع 1 + رقم 2;

}

كثافة العمليات الرئيسية () {

النتيجة الدولية = حساب (5 ، 10);

برينتف ("٪د

"،النتيجة) ؛ / / المخرجات "15"

العودة 0;

}

في المثال أعلاه ، تقبل وظيفة كالكولاتيسوم اثنين من المعلمات نوع إنت: نوم1 و نوم2. ثم تضيف هذين الرقمين معا وتعيد النتيجة. في الوظيفة الرئيسية ، يتم استدعاء دالة الحساب بالوسيطتين 5 و 10 ، ويتم تعيين النتيجة لمتغير النتيجة. ثم يتم عرض النتيجة على الشاشة.

يمكن أن تكون معلمات الوظيفة أيضا مؤشرات للمصفوفات أو الهياكل.

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

بناء جملة الانتقال

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

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

باطلة ميفونك (إنت *أر ، إنت الحجم) {

// رمز الوظيفة

}

في هذا المثال ، وظيفة" ميفونك "يأخذ مؤشر إلى مجموعة من الأعداد الصحيحة" أر "وعدد من عناصر مجموعة"حجم".

عند استدعاء الوظيفة ، تحتاج إلى تمرير مؤشر إلى العنصر الأول من المصفوفة وحجم المصفوفة:

كثافة العمليات الرئيسية () {

إنت مياراي[] = {1, 2, 3, 4, 5};

حجم كثافة العمليات = حجم (مياراي) / حجم (مياراي [0]);

ميفونك (مياراي ، الحجم);

العودة 0;

}

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

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

باطلة ميفونك (إنت *أر ، إنت الحجم) {

ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {

برينتف ("٪د " ، أر[ط]);

}

برينتف("

");

}

باطلة آخر فونك (إنت *أر ، إنت الحجم) {

// رمز الوظيفة

}

كثافة العمليات الرئيسية () {

إنت مياراي[] = {1, 2, 3, 4, 5};

حجم كثافة العمليات = حجم (مياراي) / حجم (مياراي [0]);

ميفونك (مياراي ، الحجم);

آخرفانك (مياراي ، الحجم);

العودة 0;

}

في هذا المثال ، تعرض وظيفة " ميفونك "عناصر الصفيف على الشاشة ، ويمكن لوظيفة" آخرفونك " استخدام الصفيف الذي تم تمريره لإجراء عمليات أخرى.

مفهوم الإرسال حسب القيمة

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

دعونا ننظر إلى مثال:

"'ج

# تشمل

تغيير باطل (إنت س) {

س = 10;

برينتف ("داخل الوظيفة: ٪ د

"،س);

}

كثافة العمليات الرئيسية () {

عدد الأسطوانات = 5;

برينتف(" قبل استدعاء الوظيفة: ٪ د

"،الأسطوانات);

تغيير القيمة (عدد الأسطوانات);

برينتف(" بعد استدعاء الوظيفة: ٪ د

"،الأسطوانات);

العودة 0;

}

«`

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

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

إذا تم تمرير الوسيطة بالرجوع ، فإن قيمة المتغير 'الأسطوانات` في الدالة `الرئيسية` ستتغير بعد استدعاء دالة 'تشانجيفالو'. ومع ذلك ، نظرا لنقل القيمة ، تبقى قيمة المتغير `الأسطوانات` دون تغيير.

سيتم عرض الشاشة:

قبل استدعاء الوظيفة: 5

داخل الوظيفة: 10

بعد استدعاء الوظيفة: 5

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

صفائف أحادية البعد

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

لإعلان صفيف أحادي البعد في ج ، يجب تحديد نوع عناصر الصفيف ، متبوعا باسم الصفيف وأبعاد الصفيف بين قوسين مربعين. على سبيل المثال:

كثافة العمليات [5];

في هذا المثال ، يتم الإعلان عن مجموعة أر من نوع إنت والبعد من 5 عناصر.

يتم الوصول إلى عناصر المصفوفة عن طريق تحديد الفهرس بين قوسين مربعين. يبدأ ترقيم عناصر المصفوفة من الصفر. على سبيل المثال:

قيمة إنت = أر[2] ؛ / / الحصول على قيمة عنصر صفيف أر مع مؤشر 2

غالبا ما تستخدم المصفوفات لتخزين كميات كبيرة من البيانات ذات الصلة. تشمل العمليات الأكثر شيوعا على المصفوفات أحادية البعد ما يلي:

  • تهيئة صفيف بقيم افتراضية أو قيم محددة;
  • إدراج وحذف عناصر الصفيف;
  • البحث عن أكبر أو أصغر عنصر في المصفوفة;
  • فرز عناصر المصفوفة;
  • التكرار من خلال عناصر المصفوفة لتنفيذ إجراءات معينة.

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

تمرير صفيف إلى وظيفة

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

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

مثال:

# تشمل

// وظيفة لإخراج عناصر الصفيف

فواد برينتراي (إنت* أر ، إنت الحجم) {

ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {

برينتف ("٪د" ، أر[ط]);

}

}

كثافة العمليات الرئيسية () {

إنت آر[] = {1, 2, 3, 4, 5};

حجم إنت = سيزوف ( أر) / سيزوف (أر[0]);

// استدعاء دالة لإخراج عناصر الصفيف

برينتراي (آر ، الحجم);

العودة 0;

}

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

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

سؤال وجواب

كيف يمكنني تمرير صفيف أحادي البعد إلى وظيفة في ج?

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

كيف يمكنني إنشاء وظيفة تأخذ مصفوفة أحادية البعد كوسيطة في ج?

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

كيف يمكنني نقل حجم مجموعة أحادية البعد جنبا إلى جنب مع مجموعة إلى وظيفة في ج?

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

هل من الممكن تمرير صفيف أحادي البعد إلى دالة بالرجوع إلى ج?

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

كيف يمكنني تمرير صفيف متغير الطول إلى وظيفة في ج?

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