כיצד ליישם שיחה לפי הפניה ב- C ++



מאמר זה יספק לך ידע מפורש של Call by Reference ב- C ++ עם Implements וכיצד הוא שונה מ- Call by Value.

עבודה עם C ++ אינה משימה קשה אם כבר יש לך רקע ב- C שכן שניהם חולקים טונות של מושגים זה עם זה. אבל, ל- C ++ יש כמה מושגים שאינם חלק מפרדיגמת C. בשיחה זו לפי הפניה במאמר C ++, נדבר על מושג כזה שהוא משתני הפניה ויישומיו בסדר הבא:

משתני הפניה

C ++ נותן לנו סוג חדש של משתנה כלומר משתנה ייחוס. אנו יכולים לחשוב על משתנה ייחוס ככינוי למשתנה המקורי שלנו. זה זה הפונקציונליות המדויקת של משתנה ייחוס בשורה אחת.





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

תחביר:



int שלום = 1 int * ptr int & World = שלום

כשאנחנו יוצרים משתנה 'שלום' המכיל את הערך '1', משתמשים בקטע של זיכרון כדי לכאוב את הערך '1' השם של הקטע הזה יהיה 'שלום' והכתובת של קטע זה תהיה בערך hex למשל0x64. כשאנחנו כותביםintועולם = שלוםנוצר משתנה 'עולם' המכוון לכיוון אותו מיקום זיכרון.

הכללת השורה World ++ תבצע שינויים בכתובת 0x64 זה אומר שגם הערך של המשתנה 'שלום' ישתנה. חלקם עשויים לציין כי איך הם משתני התייחסות שונים ממשתני המצביע עליהם נדון בחלק האחרון של הודעה זו.

התקשר לפי ערך וקרא לפי הפניה ב- C ++

שיחה לפי ערך: Call by Value היא שיטה נפוצה. ברוב הפעמים אתה משתמש בגישת שיחה לפי ערך מכיוון שאינך מעוניין לשנות את הערכים המקוריים שלך של המשתנים. מכאן שהשתמשנו בשיטת קריאה לפי ערך כדי לקרוא לפונקציה, רק ערכי המשתנים מועברים. זה מושג על ידי יצירת משתני דמה בזיכרון.



# כלול שימוש במרחב השמות std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  התקשר לפי ערך ב- C ++

מהתמונה לעיל אנו יכולים לראות שברגע שאנחנו קוראים לפונקציה add () הערכים של משתני x ו- y מועתקים למשתנים a ו- b. A ו- b הם משתנים דמה.

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

# כלול באמצעות מרחב שמות std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {if (a 

כפי שניתן לראות כי הפונקציה הנ'ל נראית שונה בהשוואה לפונקציות רגילות שכן סוג ההחזרה הוא 'int &'. פונקציה זו מחזירה הפניה ל- a או b בהתאם למצב. הנקודה החשובה שיש לציין כאן היא שהערכיםלא מוחזרים.

אם נקרא לפונקציה min (x, y) = 10. 10 יוקצה ל- x אם היא מינימלית או ל- y אם y היא מינימלית.

שיחה לפי הפניה נגד המצביע

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

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

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

עם זה, אנו מגיעים לסוף של Call By Reference במאמר C ++. אני מקווה שהבנתם את היישומים השונים של השיחה לפי ערך והתייחסות וכיצד שניהם נבדלים.

אם ברצונך ללמוד עוד, עיין ב מאת אדוריקה, חברת למידה מקוונת אמינה. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה נועד להכשיר אותך לקונספטים מרכזיים של Java וגם עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.