יום רביעי, 10 במאי 2017

משתנה מיוחס

משתנה מיוחס

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


האופרטור & בעצם נותן שם נוסף למשתנה קיים. השם החדש הוא המשתנה המיוחס.
ייחוס יכול להתרחש רק פעם אחת בחייו של משתנה מיוחס.
תוכנית לדוגמה:
#include <iostream>
using namespace std;
void swap(int &a,int &b){
 int temp;
 temp=a;
 a=b;
 b=temp;
}
void main(){
 int num1=5,num2=10;
 swap(num1,num2);
 cout << num1 << "  " << num2 << "\n";
}





פונקציה שמחזירה ערך מיוחס

פונקציה יכולה להחזיר ערך מיוחס. במקרה הזה היא זהה בכל למשתנה שהיא מיוחסת אליו.
תוכנית לדוגמה:
#include <iostream>
using namespace std;
 
int num = 25;
 
int &getnum(){
int &ref = num;
return ref;
}
void main(){
 cout << getnum() << "\n"// ידפיס את ערך המשתנה הגלובאלי: 25
 getnum() = 15; // num משנה את ערך המשתנה שאליו הפונקציה מיוחסת. המשתנה הגלובאלי
 cout << num << "\n"// ידפיס 15
}



דוגמה נוספת:
#include <iostream>
using namespace std;
 
int A[10] = {1,5,6,35,23,-46,7,5,50,20};
 
int &f(int ind){
 if (ind<0||ind>9) exit(0); // כדי שיהיה בתוך טווח המערך
return A[ind]; // במקרה הזה אפילו לא עשינו שימוש במשתנה מיוחס בתוך הפונקציה
}
void main(){
 int x=3, t;
 t=f(x);
 cout <<t<<"\n";     // ידפיס 35 
 f(x)=72;
 cout <<A[x]<<"\n";  // ידפיס 72 
}
השימוש בפונקציה כזו הוא נדיר מאוד.




אין תגובות:

הוסף רשומת תגובה