Cách hay nhất để học một ngôn ngữ lập trình mới là viết chương trình với ngôn ngữ đó. Dennis Ritchie
STDIO Để tiếp tục cho chuỗi bài viết thuộc chương trình tự học ngôn ngữ lập trình C++, bài viết hôm tôi xin phép chia sẻ các cách truyền tham số cho một hàm trong C++. Cụ thể bài viết sẽ giới thiệu chi tiết về truyền theo tham chiếu và truyền theo tham trị.
Nội dung bài viết

Giới thiệu

Trong quá trình học tập cũng như làm việc với hàm. Truyền tham số cho hàm là một kiến thức không thể thiếu với bất kỳ lập trình viên nào. Bài viết sẽ chia sẻ các cách truyền tham số cho hàm trong C++.

Tiền đề bài viết

Bài viết tiếp theo nằm trong chuỗi những bài viết về lập trình C++ cơ bản.

Đối tượng hướng đến

Bài viết dành cho những đối tượng đang trong quá trình tìm hiểu lập trình căn bản.

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.

Để hiểu hơn về truyền theo kiểu tham trị cũng như cách thực hiện, ta xét các ví dụ sau:

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

Không giống như truyền tham trị, truyền tham chiếu  sẽ 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 ta sẽ thấy giá trị của a và b trước và sau đã được thay đổi. Để hiểu sâu hơn về tham chiếu, các bạn có thể tham khảo bài viết về Kiểu Tham Chiếu - Reference ::  www.stdio.vn/articles/read/156/kieu-tham-chieu-reference.

Bạn cần hỗ trợ các dự án kết nối không dây?

Quí doanh nghiệp, cá nhân cần hỗ trợ, hợp tác các dự án IoT, kết nối không dây. Vui lòng liên hệ, hoặc gọi trực tiếp 0942.111912.

  • TỪ KHÓA
  • Arduino
  • ESP32
  • ESP8266
  • Wifi
  • Bluetooth
  • Zigbee
  • Raspberry Pi
THẢO LUẬN
ĐÓNG