STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ

    Các Phương Pháp Truyền Tham Số

    Giới thiệu chi tiết về truyền theo tham chiếu và truyền theo tham trị trong hàm C++.
    Ryan Lê

    Ryan

    27/01/2015
    20/09/2020
    2 phút đọc
    Các Phương Pháp Truyền Tham Số

    Có 2 cách truyền tham số cho hàm

    • Truyền tham trị
    • Truyền tham chiếu

    Truyền tham trị

    Hiểu một cách đơn giản thì truyền theo tham trị là truyền giá trị của tham số.

    Khi hàm được gọi. Chương trình sẽ khởi tạo các ô nhớ tương ứng với danh sách tham số truyền vào. Sau đó sẽ sao chép các giá trị của tham số vào các ô nhớ mới này. Vì vậy những thay đổi trong ô nhớ mới này sẽ không ảnh hưởng đến các tham số truyền vào.

    Xem chương trình tính tổng 2 số:

    #include <iostream>
    using namespace std;
    
    int sum(int a, int b)
    {
    	return (a+b);
    }
    
    int main()
    {
    	int a = 2, b = 3;
    	int s;
    	s = sum(a, b); // Gán giá trị là tổng a và b cho biến s;
    	cout << "Tong của a va b: " << s << endl;
    	return 0;
    }

    Ví dụ trên là một kiểu truyền theo tham trị.

    Xét một ví dụ khác, chương trình hoán đổi vị trí 2 số:

    #include <iostream>
    using namespace std;
    void swap(int a, int b) { int tamp = a; a = b; b = tamp; } int main() { int a = 2, b = 3; cout << "Truoc khi hoan doi: " << a << ' ' << b << endl;; swap(a, b); // hoán đổi cout << "Sau khi hoan doi: " << a << ' ' << b << endl; return 0; }

    Sau khi chạy chương trình trên sẽ thấy kết quả trước và sau vẫn không đổi. Lý do là bởi vì lúc truyền tham số, chương trình sẽ khởi tạo 2 ô nhớ khác và sao chép giá trị truyền vào. Nên mọi thay đổi trong hàm sẽ không ảnh hưởng đến chương trình chính.

    Do đó không thể dùng cách truyền tham trị cho chương trình trên.

    Truyền tham chiếu

    Truyền tham chiếu làm thay đổi giá trị của biến truyền vào. Vì vậy, cách thao tác làm thay đổi trên địa chỉ truyền vào thì khi kết thúc hàm vẫn được giữ nguyên.

    Xét lại chương trình hoán đổi vị trí (truyền theo tham chiếu)

    #include <iostream>
    using namespace std;
    void swap(int &a, int &b) { int tamp = a; a = b; b = tamp; } int main() { int a = 2, b = 3; cout << "Truoc khi hoan doi: " << a << ' ' << b << endl;; swap(a, b); // hoán đổi cout << "Sau khi hoan doi: " << a << ' ' << b << endl; return 0; }

    Khi chạy chương trình trên sẽ thấy giá trị của ab trước và sau đã được thay đổi.

    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021