Kỹ thuật lập trình truyền con trỏ cho hàm trong C++ – Chia Sẻ Kiến Thức Điện Máy Việt Nam

Các bạn đã tìm hiểu 2 cách truyền đối số là Truyền tham trị và truyền tham chiếu cho hàm trong C++. Bài này sẽ giới thiệu một cách truyền đối số nữa là truyền con trỏ cho hàm. Sau khi học xong bài này, các bạn cần hiểu được sự khác nhau giữa những cách truyền đối số cho hàm.

1. Nhắc lại cách truyền tham trị và tham chiếu

Truyền tham trị (pass by value)

void passByValue(int x){
	x++;
}
int a = 10;
passByValue(a);//lời gọi hàm truyền tham trị

Khi hàm passByValue(a); được gọi, thì biến x trong hàm sẽ được cấp phát một vùng nhớ trên bộ nhớ. Giá trị của biến a sẽ được gán cho biến x và lưu ở vùng nhớ của biến x. Lúc này, x == 10.

Khi thực hiện lệnh: x++; thì chỉ có biến x tăng lên 1 (x == 11). Sau khi hàm kết thúc, biến x cũng sẽ bị hủy và giá trị biến a không thay đổi.

Truyền tham chiếu (pass by reference)

void passByValue(int &x){
	x++;
}
int a = 10;
passByValue(a);//lời gọi hàm truyền tham chiếu

Khi hàm passByValue(a); được gọi, thì biến x trong hàm sẽ có cùng địa chỉ vùng nhớ với biến a. Tức là 2 biến có cùng 1 vùng nhớ.

Bạn đang đọc : Kỹ thuật lập trình truyền con trỏ cho hàm trong C + +

Khi thực hiện lệnh: x++; thì biến x tăng lên 1 (x == 11). Giá trị này được lưu ở vùng nhớ chung của biến x và biến a, dẫn đến giá trị truy xuất từ biến a cũng thay đổi theo. Sau khi hàm kết thúc, biến x cũng sẽ bị hủy và giá trị biến a bị thay đổi.

2. Truyền con trỏ cho hàm

Chương trình C++ minh họa truyền con trỏ cho hàm

#include 
#include 
using namespace std;

void passByValue(int *x){
	cout<<"Dia chi cua con tro x:"<<&x<

Xem thêm: Sửa Máy Sấy Electrolux Đà Lạt Lâm Đồng

Kết quả

Dia chi cua con tro x:00F1FB28
Dia chi cua bien a:00F1FBFC
Gia tri cua bien a bi thay doi:11

Khi hàm passByValue(&a); được gọi, thì biến con trỏ x trong hàm sẽ được cấp phát một vùng nhớ để lưu địa chỉ của biến a.

Khi thực hiện lệnh: (*x)++; thì biến con trỏ x truy cập vào vùng nhớ của biến a. Rồi lấy giá trị trong vùng nhớ của biến a tăng lên 1 và lưu lại trong vùng nhớ đó. Lúc này, giá trị truy xuất được từ biến a sẽ tăng lên 1 (a==11).

Sau khi hàm kết thúc, biến con trỏ x cũng sẽ bị hủy và giá trị biến a bị thay đổi.

Nhận xét: Việc sử dụng truyền con trỏ cho hàm sẽ tốn bộ nhớ (bộ nhớ lưu con trỏ) hơn truyền tham chiếu (truyền tham chiếu thì các biến sử dụng chung vùng nhớ). Nhưng không nên lạm dụng cách truyền nào mà nên sử dụng phù hợp cho từng yêu cầu cụ thể của chương trình.

Xem thêm: Máy lọc nước Karofi và những ưu điểm không thể chê

Xem thêm : Hướng dẫn chọn mua nồi cơm điện
5/5 – ( 1 bầu chọn )

Source: https://dvn.com.vn
Category : Bompani

Alternate Text Gọi ngay