מה ההבדל בין שיחה לפי ערך, שיחה לפי כתובת ושיחה לפי הפניה תחת פונקציות הנושא ב- C ++?


תשובה 1:

התקשר לפי ערך:

בשיחה לפי ערך לא ניתן לשנות את הערך המקורי. כשאתה מעביר ערך לפונקציה הוא מאוחסן באופן מקומי על ידי פרמטר הפונקציה במיקום זיכרון הערימה. אם תשנה את ערך פרמטר הפונקציה, הוא ישתנה עבור הפונקציה הנוכחית בלבד ולא תהיה לה השפעה מחוץ לפונקציה הנוכחית והיא לא תשנה את ערך המשתנה בתוך פונקציית המתקשר.

# כלול <זרם>
שימוש במרחב השמות std;

מספר החלף חלל (int a, int b)
{
זמני temp;
temp = a;
a = b;
b = טמפ;
}

int main ()
{
int a = 1111, b = 0000;
להחליף (א, ב); // העברת הערכים.
cout << "ערך של a:" << a << "ערך של b:" << b;
}

התקשר לפי הפניה:

השיחה בשיטת הפניה מעתיקה את הפניה (כתובת) של ויכוח לפרמטרים. בתוך הפונקציה, הפניה משמשת לגישה לטיעון בפועל ששימש בשיחה. המשמעות היא שאם הפרמטרים משתנים, הערכים שמחוץ לפונקציה משתנים עימה גם מכיוון שוויכוחים בפועל ופורמליים שניהם חולקים את אותו שטח כתובת בזיכרון.

# כלול <זרם>
שימוש במרחב השמות std;

מספר חלופי חללים (int * a, int * b) // מצביעים
{
זמני temp;
temp = * a;
* a = * b;
* b = טמפ;
}

int main ()
{
int a = 1111, b = 0000;
החלפה (& a, & b); // הפניות עוברות (כתובות).
cout << "ערך של a:" << a << "ערך של b:" << b;
}

תשובה 2:

אני אכתוב אב-טיפוס של כל פונקציה

1)

כיף אינטימי (int a, int b)

{

// שיחה לפי ערך

כאן ארגומנט הפונקציה מועתק בערך זמני a, b;

// אתה לא יכול להחליף נתונים מקוריים או כל פעולה על נתונים אלה (א, ב) תעשה זאת

לא ישתקף לנתונים המקוריים

}

אינט כיף (int & a, int & b)

{

// התקשר באמצעות הפניה

// כאן אתה מעביר את המשתנה ישירות עם שם שונה כל השינויים

על נתונים a, b ישתקף בחזרה למשתנה הראשי

}

כיף int (int * p1, int * p2)

{

// להתקשר באמצעות כתובת

כאן אתה מעביר את כתובת המיקום ולא את המשתנה שאליו אתה יכול לגשת

המשתנה באמצעות * p1

}


תשובה 3:

בשיחה לפי ערך אנו מעבירים את הערך לפונקציה כפרמטר אך בשיחה על ידי רענון אנו מעבירים את הכתובת של אותו ערך לפונקציה כפרמטר.

דוגמה לשיחה על ידי רענון: -

החלפת חלל (int * a, int * b);

ראשי בטל ()

{

int x, y;

cout << "הזן את מספרי ההחלפה \ n";

cin >> x >> y;

החלפה (& x, & y);

גץ '();

}

החלפת חלל (int * a, int * b)

{

זמני temp;

temp = * a;

* a = * b;

* b = טמפ;

cout << * a << * b;

}

דוגמה לשיחה לפי ערך: -

החלפת חלל (int a, int b);

ראשי בטל ()

{

int x, y;

cout << "הזן את מספרי ההחלפה \ n";

cin >> x >> y;

החלפה (x, y);

גץ '();

}

החלפת חלל (int * a, int * b)

{

זמני temp;

temp = a;

a = b;

b = טמפ;

cout << a << b;

}