Call by value là gì?

Phrase Programming
Gọi theo giá trị

Gọi theo giá trị (call by value) là truyền đối số (argument) đến một hàm (function), sao chép giá trị thực của đối số vào tham số hình thức (formal parameter) của hàm. Trong trường hợp này các thay đổi được thực hiện đối với tham số bên trong hàm không ảnh hưởng đến đối số.

Theo mặc định, ngôn ngữ C sử dụng gọi theo giá trị (call by value) để truyền các đối số. Nói chung nó có nghĩa là mã bên trong một hàm không thể thay đổi các đối số được sử dụng để gọi hàm. Hãy xem định nghĩa hàm swap () như sau.


/* function definition to swap the values */
void swap(int x, int y) {

   int temp;

   temp = x; /* save the value of x */
   x = y;    /* put y into x */
   y = temp; /* put temp into y */
  
   return;
}

Bây giờ chúng ta hãy gọi hàm swap () bằng cách truyền các giá trị thực như trong ví dụ sau


#include 
 
/* function declaration */
void swap(int x, int y);
 
int main () {

   /* local variable definition */
   int a = 100;
   int b = 200;
 
   printf("Before swap, value of a : %d\n", a );
   printf("Before swap, value of b : %d\n", b );
 
   /* calling a function to swap the values */
   swap(a, b);
 
   printf("After swap, value of a : %d\n", a );
   printf("After swap, value of b : %d\n", b );
 
   return 0;
}
void swap(int x, int y) {

   int temp;

   temp = x; /* save the value of x */
   x = y;    /* put y into x */
   y = temp; /* put temp into y */
  
   return;
}

Output


Before swap, value of a : 100
Before swap, value of b : 200
After swap, value of a : 100
After swap, value of b : 200

Nó cho thấy rằng không có thay đổi nào trong các giá trị, mặc dù chúng đã được thay đổi bên trong hàm.

Learning English Everyday