วันอังคารที่ 15 มิถุนายน พ.ศ. 2553

การส่งparameter แบบ pass by reference

เวลาที่ส่งผ่านparameter แบบอ้างอิง function ที่ถูกเรียกจะใช้addressของตัวแปรนั้น โดยที่ไม่ต้องสร้างตัวแปรขึ้นมาใหม่ในหน่วยความจำอีกหนึ่งตำแหน่ง แต่สำหรับเรื่องการแก้ไขต่าตัวแปร functionจะสามารถแก้ไขค่าตัวแปรไปได้หรือไม่ ขึ้นอยู่กับการส่งparameterนั้นทำอย่างไร ก็คือ ถ้ามีการใส่ keyword const เอาไว้ function ก็จะไม่สามารถแก้ไขค่าตัวแปรได้ แต่ถ้าไม่ใส่ const functionนั้นก็จะสามารถแก้ไขค่าตัวแปรได้ มาลองดูตัวอย่างโปรแกรมด้านล่างนะคับ

#include <iostream>
using namespace std;
void MyFunction(int&);
void main(){
    int iMyVariable = 5;
    MyFunction(iMyVariable);
    cout << "iMyVariable = " << iMyVariable << endl;
}
void MyFunction(int &i){
    i+=3;
}