Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Truyền tham chiếu (pass by reference) trong ngôn ngữ C là gì?


Truyền tham chiếu trong C là gửi địa chỉ biến làm đối số.

Thuật toán

Thuật toán giải thích pass by value trong C:

BẮT ĐẦU 
Bước 1: Khai báo hàm với biến con trỏ sẽ được gọi. 
Bước 2: Khai báo biến a,b. 
Bước 3: Nhập 2 biến a,b tại runtime. 
Bước 4: Gọi hàm truyền tham chiếu. Nhảy bước 6 
Bước 5: In kết quả a,b. 
Bước 6: Hàm gọi swap có địa chỉ làm đối số. 
    i. Khai báo biến temp 
    ii. Temp = *a 
    iii. *a = *b 
    iv. *b = temp 
KẾT THÚC

Chương trình ví dụ

Chương trình C hoán đổi 2 số dùng pass by reference:

#include <stdio.h> 
void main() { 
    void swap(int *, int *); 
    int a, b; 
    printf("Nhập 2 số: "); 
    scanf("%d%d", &a, &b); 
    printf("Trước hoán đổi a=%d b=%d", a, b); 
    swap(&a, &b); 
    printf("Sau hoán đổi a=%d, b=%d", a, b); 
} 
void swap(int *a, int *b) { 
    int t; 
    t = *a; 
    *a = *b; 
    *b = t; 
}

Kết quả

Nhập 2 số: 10 20 
Trước hoán đổi a=10 b=20 
Sau hoán đổi a=20 b=10

Ví dụ 2

Chương trình C tăng giá trị lên 5 mỗi lần gọi bằng pass by reference:

#include <stdio.h> 
void inc(int *num) { 
    *num = *num + 5; 
} 
int main() { 
    int a = 20, b = 30, c = 40; 
    inc(&a); 
    inc(&b); 
    inc(&c); 
    printf("Giá trị a: %d\n", a); 
    printf("Giá trị b: %d\n", b); 
    printf("Giá trị c: %d\n", c); 
    return 0; 
}

Kết quả

Giá trị a: 25 
Giá trị b: 35 
Giá trị c: 45