This post was flagged by the community and is temporarily hidden.
Tại sao phải dùng con trỏ trong c++
zạ…em cảm on anh nhiều
Có một tác dụng của con trỏ nữa, bạn có thể xem ví dụ sau:
Chẳng hạn bạn có một hàm muốn đổi chỗ 2 số nguyên chẳng hạn:
Nếu không dùng con trỏ:
void Swap(int x, int y)
{
int temp = x;
x = y;
y = tem;
}
int main()
{
int a = 1, b = 2;
std::cout << "Truoc khi goi ham Swap: a = " << a << ", b = " << b;
Swap(a, b);
std::cout << "Sau khi goi ham Swap: a = " << a << ", b = " << b;
return 0;
}
Bây giờ trong hàm main bạn thử khai báo 2 số nguyên rồi gọi hàm này, sau đó in ra 2 số đó xem nó có thay đổi giá trị cho nhau ko nhé, câu trả lời là không, vì khi khi ta truyền như vậy thì đoạn code trong hàm main ở dòng Swap(a, b) sẽ được hiểu là:
x = a;
y = b;
int temp = x;
x = y;
y = temp;
Rõ ràng hàm này không thể thực hiện chức năng như mong muốn vì nó chỉ làm trên 2 bản sao của a và b mà thôi.
Bây giờ nếu ta dùng con trỏ:
void Swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
Bây giờ hàm main thay vì truyền giá trị của a và b thì ta truyền vào địa chỉ của chúng
int main()
{
int a = 1, b = 2;
std::cout << "Truoc khi goi ham Swap: a = " << a << ", b = " << b;
Swap(&a, &b);
std::cout << "Sau khi goi ham Swap: a = " << a << ", b = " << b;
return 0;
}
Giải thích:
Chỗ gọi hàm Swap(&a, &b) sẽ được hiểu như sau:
x = &a; // Lưu ý x là con trỏ cho nên giá trị của nó là địa chỉ của 1 biến
y = &b; // y tương tự x
int temp = *x; // *x chính là lấy giá trị mà con trỏ x đang trỏ tới địa chỉ đấy.(ở đây là địa chỉ của a)
*x = *y;
*y = temp;
Do đó hàm Swap lúc này đã thỏa mãn được yêu cầu đổi giá trị 2 số a và b.
Ngoài ra trong C++ thì bạn còn có thể dùng các truyền tham chiếu bằng cách dùng dấu “&”
Mình hiểu sao nói vậy, nếu có gì sai sót mong mọi người đòng góp thêm ạ
Ban se hoc nhung bai sau cua anh dat ve cai nay, hen nhu bai “Cấp pháp động”.
cho mình xin link dạy được k ?
link fb cua minh ha ban
hay qua ban, cam on ban nhiu
kk có đầy bạn ơi,bạn o đâu
Bạn BeTapCode bắt bẻ câu chữ quá. Với mức tìm hiểu của chủ top thì giải thích vậy là hợp lý rồi, bạn nguy hiểm quá. Còn con trỏ thì hoàn toàn có thể trỏ tới một địa chỉ Vật lý xác định của riêng từng con chip. Nếu địa chỉ đó nằm ở vùng mà địa chỉ của nó là cố định trên memory map. Ví dụ như Peripheral.
A post was removed.
quá hay cậu ơi, cảm ơn cậu
khi bạn khai báo biến cần cấp phát vùng nhớ để lưu trữ, dùng con trỏ để quản lý bộ nhớ đó. Bạn học khái niệm cấp phát động là cấp phát vùng trong lúc chạy chương trình, nếu không có con trỏ bạn không thể làm những trò như : vào một game, chọn số lượng lính khi mới vào dàn trận
Hiểu đơn giản thì khi thực thi hàm mà ko thay đổi giá trị của biến truyền vào thì ko cần dùng con trỏ, còn thay đổi thì phải dùng con trỏ. Ví dụ hàm bật tắt đơn giản quạt(int bật), quạt(int tắt) thì ko cần con trỏ, còn hàm tínhtoán(int input, int *output) thì phải dùng.