Truyền tham số theo giá trị

Một phần của tài liệu Bài Giảng C++ (Trang 137 - 139)

Mặc nhiên trong C, tất cả các tham số thực sự được truyền cho hàm theo giá trị (truyền giá trị của tham số thực sự cho hàm). Khi đó các tham số hình thức sử dụng các vùng nhớ riêng và là bản sao của các tham số thực sự, do đó hàm được gọi không thể thay đổi giá trị của các tham số thực sự. Xem ví dụ sau: #include <stdio.h> main() { int a, b, c; a = b = c = 0; printf(“\nEnter 1st integer: “); scanf(“%d”, &a); printf(“\nEnter 2nd integer: “); scanf(“%d”, &b); c = adder(a, b);

printf(“\n\na & b in main() are: %d, % d”, a, b);

printf(“\n\nc in main() is: %d”, c); /* c gives the addition of a and b */ } adder(int a, int b) { int c; c = a + b; a *= a; 137

b += 5;

printf(“\n\na & b within adder function are: %d, %d “, a, b);

printf(“\nc within adder function is : %d”,c);

return(c); }

Kết quả thực thi khi nhập vào 2 và 4: a & b in main() are: 2, 4

c in main() is: 6

a & b within adder function are: 4, 9 c within adder function is : 6

Các biến được sử dụng trong hàm main() và

adder() có cùng tên. Tuy nhiên, chúng được lưu trữ

trong các vị trí bộ nhớ khác nhau. Điều này được thấy rõ từ kết quả của chương trình trên. Các biến a và b trong hàm adder() được thay đổi từ 2 và 4 thành 4 và 9. Tuy nhiên, sự thay đổi này không ảnh hưởng đến các giá trị của a và b trong hàm main(). Biến c trong main() thì khác với biến c trong

adder().

Tóm lại, khi các tham số thực sự được truyền

theo giá trị thì những thay đổi của các tham số hình

thức không hưởng đến giá trị của các tham số thực sự tương ứng.

Một phần của tài liệu Bài Giảng C++ (Trang 137 - 139)

Tải bản đầy đủ (DOC)

(196 trang)
w