การส่ง argument ไปยังฟังก์ชั่น มี 2 แบบ คือ

  • pass by value คือการ คัดลอกค่า ที่เก็บจากตัวแปรที่ส่ง ไปยังตัวแปรของฟังก์ชั่น
  • pass by reference คือ การใช้งาน ข้อมูลที่เก็บจาก address ของตัวแปรที่ส่งไป ในฟังก์ชั่นนั้น

ตัวอย่างการเขียนฟังก์ชั่น แบบ pass by value

#include <iostream>
using namespace std;

void increment(int inp){
  cout << inp++ << endl;
}

int main(){
 for(int i=0;i<5;i++)
  incrment(i);
 return 0;
}

เอาท์พุตของโปรแกรม

0 1 2 3 4

ตัวอย่างการเขียนฟังก์ชั่นแบบ pass by reference

#include <iostream>
using namespace std;

void increment(int &inp){
  cout << inp++ << endl;
}

int main(){
 for(int i=0;i<5;i++)
  increment(i);
 return 0;
}

เอาท์พุตของโปรแกรม

0 2 4

วิธีการส่งค่าแบบแรกนั้นจะใช้เวลามากกว่า เนื่องจากจะต้องมีโอเปอเรชั่นในการคัดลอกค่าเพิ่มเติม ซึ่งถ้าต้องการส่งไฟล์ข้อมูลโครงสร้างขนาดใหญ่แล้ว แน่นอนว่าประสิทธิภาพย่อมลดลงแน่นอน แต่การส่งแบบ pass by reference นั้นก็เสี่ยงต่อการที่จะมีการเปลี่ยนแปลงค่าเช่นเดียวกัน

 

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s