Truyền giá trị trong C là gửi giá trị biến làm đối số.
Thuật toán
Thuật toán giải thích pass by value:
BẮT ĐẦU
Bước 1: Khai báo hàm sẽ được gọi.
Bước 2: Khai báo biến.
Bước 3: Nhập 2 biến a,b tại runtime.
Bước 4: Gọi hàm, nhảy bước 6.
Bước 5: In kết quả a,b.
Bước 6: Hàm gọi swap.
i. Khai báo temp
ii. Temp = a
iii. a = b
iv. b = temp
KẾT THÚC
Ví dụ 1
Chương trình C hoán đổi 2 số dùng pass by value:
#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=10 b=20
Lưu ý: Giá trị gốc không thay đổi vì chỉ truyền bản sao.
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 value:
#include <stdio.h>
int inc(int num) {
num = num + 5;
return num;
}
int main() {
int a = 10, b, c, d;
b = inc(a);
c = inc(b);
d = inc(c);
printf("Giá trị a: %d\n", a);
printf("Giá trị b: %d\n", b);
printf("Giá trị c: %d\n", c);
printf("Giá trị d: %d\n", d);
return 0;
}
Kết quả
Giá trị a: 10 Giá trị b: 15 Giá trị c: 20 Giá trị d: 25