13/10/2018, 16:24

Call by value – gọi hàm theo giá trị trong C

Học lập trình C++ Phương thức call by value trong C của các đối số truyền vào một hàm sao chép giá trị thực của một đối số vào tham số chính thức của hàm. Trong trường hợp này, các thay đổi được thực hiện cho tham số bên trong hàm không ảnh hưởng đến đối số. Theo mặc định, lập ...

Học lập trình C++

Phương thức call by value trong C của các đối số truyền vào một hàm sao chép giá trị thực của một đối số vào tham số chính thức của hàm. Trong trường hợp này, các thay đổi được thực hiện cho tham số bên trong hàm không ảnh hưởng đến đối số.

Theo mặc định, lập trình C sử dụng call by value để chuyển đối số. Nói chung, nó có nghĩa là mã 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 xét hàm swap() như sau.

#include <stdio.h>
 
/* khai bao prototype */
void swap(int x, int y);
 
int main() {
    // dinh nghia cac bien local
    int a = 100;
    int b = 200;
 
    printf("Truoc swap, gia tri cua a : %d
", a );
    printf("Truoc swap, gia tri cua b : %d
", b );
 
    // goi ham swap() de hoan doi cac gia tri
    swap(a, b);
 
    printf("Sau swap, gia tri cua a : %d
", a );
    printf("Sau swap, gia tri cua b : %d
", b );
 
    return 0;
}

/* 
 * ham hoan doi cac gia tri 
 */
void swap(int x, int y) {
    int temp;

    temp = x;
    x = y;
    y = temp;

    return;
}

Kết quả:

Truoc swap, gia tri cua a : 100
Truoc swap, gia tri cua b : 200
Sau swap, gia tri cua a : 100
Sau swap, gia tri cua b : 200

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

Học lập trình C++
0