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