في ج البرمجة ، يمكن للوظائف إرجاع قيمة واحدة فقط. ومع ذلك ، من الممكن الحصول على قيمتين أو أكثر من دالة باستخدام المؤشرات أو أنواع البيانات الهيكلية. في هذه المقالة ، سوف ننظر إلى أمثلة وشرح كيفية القيام بذلك.
طريقة واحدة للحصول على قيمتين من وظيفة في ج هو استخدام المؤشرات. المؤشر هو متغير يحتوي على عنوان متغير آخر. في الدالة التي يجب أن ترجع قيمتين ، يمكننا تمرير عنوان المتغيرات كوسيطات وتغيير قيمها داخل الدالة. على سبيل المثال:
باطلة جيتووفالويس (إنت* أ ، إنت* ب) {
* أ = 10;
* ب = 20;
}
تأخذ هذه الوظيفة مؤشرين - ' أ ' و 'ب' - وتغير قيم المتغيرات التي تشير إليها. وبالتالي ، يمكننا الحصول على قيمتين عن طريق استدعاء هذه الوظيفة وتمرير عناوين المتغيرات:
هناك طريقة أخرى للحصول على قيمتين من دالة وهي استخدام أنواع البيانات الهيكلية. الهيكل هو نوع بيانات مخصص يسمح لك بدمج عدة متغيرات من أنواع مختلفة في متغير واحد. يمكننا إنشاء بنية تحتوي على متغيرين من النوع الذي نحتاجه وإرجاع هذه البنية من دالة. Например:
struct TwoValues {
int a;
int b;
};
struct TwoValues getTwoValues() {
struct TwoValues result;
result.a = 10;
result.b = 20;
return result;
}
Теперь мы можем получить два значения, вызвав эту функцию:
int main() {
struct TwoValues values = getTwoValues();
// значение values.a равно 10
// значение values.b равно 20
}
وبالتالي ، باستخدام المؤشرات أو أنواع البيانات الهيكلية ، يمكنك الحصول على قيمتين من دالة في اللغة ج. يعتمد الاختيار بين هذين النهجين على الموقف المحدد وتفضيلات المبرمج.
- المبادئ الأساسية لكيفية عمل الوظائف في ج
- مثال 1
- كيفية الحصول على قيمتين تم إرجاعها من دالة في ج
- التفسير 1
- تحليل المثال 1: استخدام المؤشرات
- المثال 2
- طريقة أخرى للحصول على قيمتين من دالة في ج
- التفسير 2
- سؤال وجواب
- كيف يمكنني الحصول على قيمتين من وظيفة في ج?
- كيف يمكنني استخدام مؤشرات للحصول على قيمتين من وظيفة في ج?
- كيف يمكنني إنشاء بنية للحصول على قيمتين من وظيفة في ج?
- هل من الممكن إرجاع مصفوفة من دالة في ج?
- ما هي الطرق الأخرى التي يمكن استخدامها للحصول على قيمتين من دالة في ج?
- ما هي الميزات التي يجب مراعاتها عند استخدام المؤشرات للحصول على قيمتين من دالة في ج?
المبادئ الأساسية لكيفية عمل الوظائف في ج
وظائف في لغة البرمجة ج هي الأداة الرئيسية لهيكلة التعليمات البرمجية وإعادة استخدام شظاياها. إنها تسمح لك بتقسيم البرنامج إلى كتل صغيرة من التعليمات البرمجية ، كل منها يؤدي مهمة محددة. يمكن للمبرمج تحديد وظائفه الخاصة أو استخدام الوظائف الجاهزة المتوفرة في مكتبة سي القياسية.
تشمل المبادئ الأساسية لكيفية عمل وظائف ج ما يلي:
- تعريف الوظيفة: يتم تعريف الوظيفة باستخدام الكلمة الرئيسية الفارغة أو يتم تحديد نوع بيانات الإرجاع. ثم يتم تحديد اسم الوظيفة ومعلماتها بين قوسين. إذا كانت الوظيفة لا تقبل المعلمات ، فسيتم ترك الأقواس فارغة.
- إعلان الوظيفة: يمكن الإعلان عن وظيفة قبل تعريفها للسماح لأجزاء أخرى من البرنامج بالاتصال بها قبل تعريفها.
- استدعاء وظيفة: لاستدعاء دالة ، يتم استخدام اسمها ، متبوعا بوسيطات الوظيفة بين قوسين. إذا لم ترجع الدالة شيئا ، فيمكن استخدام استدعاء الدالة في تعبير أو كتعليمات.
- إرجاع قيمة: إذا كانت الدالة هي إرجاع نتيجة ، فإن تعريفها يحدد نوع البيانات المراد إرجاعها. لإرجاع قيمة من دالة ، يتم استخدام الكلمة الرئيسية الإرجاع.
وظائف في اللغة ج يمكن أن تكون مثقلة ، وهذا هو ، لديهم متغيرات مختلفة بنفس الاسم ، ولكن مع معلمات مختلفة. يمكن أيضا تداخل الوظائف ، أي تعريفها داخل وظائف أخرى. في هذه الحالة ، يمكن للدالة المتداخلة استخدام متغيرات ومعلمات الوظيفة الخارجية. ال لغة ج يدعم أيضا تمرير مؤشر إلى دالة كوسيطة أو إرجاع مؤشر إلى دالة.
المبادئ الأساسية لوظائف ج تبسيط تطوير رمز البرنامج وجعلها أكثر قابلية للقراءة وحدات. وظائف تسمح لك لإعادة استخدام مقتطفات الشفرة ومجردة من تفاصيل تنفيذها.
مثال 1
في هذا المثال ، ضع في اعتبارك دالة تقوم بإرجاع قيمتين: مجموع والمنتج من رقمين.
كود:
# تشمل
مبلغ باطل_المنتج (الباحث أ ، الباحث ب ، الباحث *المجموع ، الباحث *المنتج) {
* المجموع = أ + ب;
* المنتج = أ * ب;
}
كثافة العمليات الرئيسية () {
الباحث أ = 2 ، ب = 3;
مجموع الباحث ، المنتج;
مجموع_المنتج (أ ، ب ، ∑ ، والمنتج);
برينتف ("المجموع: ٪ د
"،مجموع);
برينتف ("المنتج: ٪ د
"،المنتج);
العودة 0;
}
الشرح:
- .
- .
- مع القيم 2 و 3 ، على التوالي.
- .
- ، على التوالي.
- .
كيفية الحصول على قيمتين تم إرجاعها من دالة في ج
في لغة البرمجة ج ، لا توجد طريقة مباشرة لإرجاع قيمتين من دالة. ومع ذلك ، هناك عدة طرق يمكن من خلالها تحقيق هذا الاحتمال.
1. تمرير المؤشرات إلى وظيفة
يمكنك تمرير مؤشرين إلى وظيفة ، ويمكن للوظيفة تعديل القيم التي تشير إليها. على سبيل المثال:
باطلة جيتووفالويس (إنت *أ ، إنت *ب) {
* أ = 10;
* ب = 20;
}
كثافة العمليات الرئيسية () {
الباحث أ ، ب;
جيتووفالويس (&أ, & ب);
برينتف ("أ = ٪ د ، ب = ٪ د
"،أ ، ب);
العودة 0;
}
2. Использование структуры
Вы можете определить структуру, содержащую два значения, и вернуть эту структуру из функции. Например:
typedef struct {
int a;
int b;
} TwoValues;
TwoValues getTwoValues() {
TwoValues result;
result.a = 10;
result.b = 20;
return result;
}
int main() {
TwoValues values = getTwoValues();
printf("a = %d, b = %d
", values.a, values.b);
return 0;
}
3. Использование указателя на массив
يمكنك أيضا استخدام مؤشر إلى صفيف كقيمة إرجاع دالة. سيسمح لك تغيير عناصر المصفوفة بإرجاع قيمتين. على سبيل المثال:
إنت * جيتووفالويس () {
قيم كثافة العمليات الثابتة[2];
القيم [0] = 10;
القيم [1] = 20;
قيم الإرجاع;
}
كثافة العمليات الرئيسية () {
إنت * القيم = جيتووفالويس();
برينتف ("أ = ٪ د ، ب = ٪ د
"،القيم [0] ، القيم [1]);
العودة 0;
}
وبالتالي ، في اللغة ج هناك عدة طرق للحصول على قيمتين تم إرجاعهما من دالة. أي واحد لاختيار يعتمد على الوضع المحدد ومتطلبات البرنامج الخاص بك.
التفسير 1
في لغة البرمجة ج ، لا توجد طريقة واضحة لإرجاع قيمتين من دالة. ومع ذلك ، يمكن استخدام أساليب مختلفة لتحقيق هذه النتيجة.
أحد هذه الأساليب هو استخدام المؤشرات.
- برينتف ("القيمة 1: ٪ د
values.value1 = 10;
{
struct TwoValues result = getTwoValues();
printf("Value 1: %d
", result.value1);
", result.value2);
، والتي يجب أن ترجع قيمتين
x
و
y
. بدلا من إرجاع هذه القيم عبر
العودة
، يمكننا تمرير المؤشرات إلى المتغيرات إلى الوظيفة
اكس_بتر
و
واي بي تي آر
، وستكون الوظيفة قادرة على تغيير قيم هذه المتغيرات مباشرة.
# تشمل
باطلة جيتووفالويس (إنت* إكس_بتر ، إنت* واي_بتر) {
* إكس_بتر = 10;
* ص_بتر = 20;
}
كثافة العمليات الرئيسية () {
إنت س ، ص;
جيتووفالويس (&س, & ص);
برينتف ("س = ٪ د ، ص = ٪ د
"،س ، ص);
العودة 0;
}
في هذا المثال ، نعلن الدالة
جيتووفالويس()
- ، الذي يقبل مؤشرين لمتغيرات عدد صحيح. داخل وظيفة ، ونحن نستخدم عملية ديريفيرانس (
- *
) لتغيير قيم المتغيرات المشار إليها من قبل المؤشرات.
في الوظيفة
الرئيسية()
نعلن اثنين من المتغيرات
x
و
y
وتمرير عناوينهم كوسائط إلى الوظيفة
جيتووفالويس()
باستخدام عملية التقاط العنوان (
&
). بعد استدعاء الوظيفة ، نقوم بالطباعة
العاشر
و
القيم ص
إلى الشاشة باستخدام
برينتف()
وظيفة.
نتيجة لتنفيذ البرنامج ، سوف نحصل على الإخراج:
إنت س = 5;
*sum = a + b;
*diff = a - b;
}
int main() {
int a = 5, b = 3;
- int sum, diff;
- getSumAndDifference(a, b, ∑, &diff);
- printf("Сумма: %d
- ", sum);
printf("Разность: %d
", diff);
return 0;
}
В данном примере функция
getSumAndDifference
يقبل حجتين
a
و
b
، فضلا عن اثنين من المؤشرات
المجموع
و
- مهرجان دبي السينمائي الدولي
- . داخل الدالة ، يتم حساب مجموع وفرق الأرقام ويتم تسجيل النتائج باستخدام المؤشرات.
- في الوظيفة
- الرئيسية
- يعلن المتغيرات
a
و
b
، وكذلك المتغيرات
المجموع
و
مهرجان دبي السينمائي الدولي
، والتي سيتم استخدامها للحصول على النتائج. ثم تسمى الوظيفة
جيتسوموالفرق
، تمريرها قيم المتغيرات
a
و
b
، وكذلك عناوين المتغيرات
المجموع
و
مهرجان دبي السينمائي الدولي
. بعد تنفيذ الوظيفة ، يتم إخراج قيم المجموع والفرق.
وبالتالي ، باستخدام تمرير المؤشرات إلى دالة ، يمكنك الحصول على قيمتين من دالة في اللغة ج.
التفسير 2
من أجل الحصول على قيمتين من دالة في ج ، يمكنك استخدام المؤشرات أو الهياكل.
1. باستخدام المؤشرات:
قم بتعريف المؤشرات على المتغيرات التي تريد تخزين القيم فيها.
عند استدعاء الدالة ، قم بتمرير عناوين هذه المتغيرات كوسيطات.
قم بتعيين قيم للمؤشرات داخل الوظيفة.
احصل على القيم عبر المؤشرات في البرنامج الرئيسي.
نموذج التعليمات البرمجية:
باطلة جيتووفالويس (إنت* أ ، إنت* ب) {
* أ = 10;
* ب = 20;
}
كثافة العمليات الرئيسية () {