30/09/2018, 16:56

Thật sự thì con trỏ dùng làm gì?

Em học con trỏ trong C/C++, có hiểu nhưng không biết nó có tác dụng gì khi có thể trỏ đến địa chỉ của một vùng nhớ?
Nghe nói con trỏ rất quan trọng nhưng không thể hiểu được nó mạnh ở điểm nào, nó có ưu điểm gì ?
Và khi nào nào thì nên dùng con trỏ để xử lí?
Đa số e dùng C++ để giải bài tập nhưng chưa bao giờ phải sử dụng con trỏ cả.

Minh Hoàng viết 19:02 ngày 30/09/2018

Thứ nhất, Con trỏ nó có khả năng hóa trang… vì thế nó mạnh bạn có thể trở thành bất kì ai, chiêu gì cũng có thì mạnh phải rồi.
Thứ hai, mình nghĩ là do có một số cấu trúc dữ liệu dùng con trỏ mới mô phỏng được.
Thật ra không nên gọi là mạnh mà gọi là quan trọng mới đúng.
Còn khi nào nên dùng con trỏ thì vô bờ.

Byn viết 18:57 ngày 30/09/2018

Con trỏ nó có khả năng hóa trang

Bạn ví dụ cụ thể cho mình được không ???

Minh Hoàng viết 19:07 ngày 30/09/2018
   int a=5;
   int b=4;
   int *p=&a;
   *p=7;
   p=&b;
   *p=6;

Nôm na là thằng p có thể thành a hoặc b.

GodOfGod viết 19:10 ngày 30/09/2018

Mới đàm đạo với mấy sư huynh về vấn đề này, và được mấy huynh dạy: chẳng làm gì cả, thích thì dùng thôi

... viết 19:09 ngày 30/09/2018

Cái đơn giản nhất mà bạn có thể hình dung là việc cấp phát vùng nhớ một cách linh hoạt sau khi con trỏ được tạo ra. Bạn có thể cấp cho nó một dung lượng bộ nhớ lúc đầu, sau đó bạn có thể thay đổi dung lượng trong quá trình chạy chương trình.

Phạm Hoàng Tuấn viết 18:58 ngày 30/09/2018

Con trỏ dùng để thao tác với các biến địa chỉ.
Lấy 1 ví dụ đơn giản, e có 1 biến A, e gọi 1 hàm XYZ nào đó với tham số là A, bình thường chương trình sẽ tạo 1 bản copy của biến A và truyền vào hàm XYZ, trong hàm này dù e có thay đổi biến A thì kết thúc hàm, biến A vẫn mang giá trị ban đầu khi chưa gọi hàm XYZ vì thực chất e thay đổi trên bản copy, nhưng nếu e truyền địa chỉ của biến A hoặc con trỏ giữ địa chỉ của biến A thì giá trị của A sẽ thay đổi sau khi gọi hàm.

Thành Phạm viết 19:12 ngày 30/09/2018

Lấy 1 ví dụ đơn giản, e có 1 biến A, e gọi 1 hàm XYZ nào đó với tham số là A, bình thường chương trình sẽ tạo 1 bản copy của biến A và truyền vào hàm XYZ, trong hàm này dù e có thay đổi biến A thì kết thúc hàm, biến A vẫn mang giá trị ban đầu khi chưa gọi hàm XYZ vì thực chất e thay đổi trên bản copy, nhưng nếu e truyền địa chỉ của biến A hoặc con trỏ giữ địa chỉ của biến A thì giá trị của A sẽ thay đổi sau khi gọi hàm.

Cái này em thấy giống ByVal với ByRef trong C#/VB.Net

Byn viết 18:56 ngày 30/09/2018

Tất nhiên là e biết thế, nhưng ngoài ra còn có thể sử dụng để làm gì không. Hay chỉ dùng để thay đổi giá trị của một biến trên một hàm ngoài scope khai báo biến đó thôi ???

Phạm Hoàng Tuấn viết 19:12 ngày 30/09/2018

Còn nhiều chứ e, ví dụ khi e khai báo 1 mảng 1 chiều int a[100], thì a lúc này thực chất là 1 con trỏ giữ địa chỉ phần tử đầu tiên của mảng a.
Hay trong danh sách liên kết, người ta thường dùng các con trỏ để liên kết các phần tử trong danh sách với nhau…

Tuấn Nguyễn viết 18:56 ngày 30/09/2018

Cấp phát động , con trỏ hàm công dụng rất lớn trong việc tái sử dụng mã nguồn, tùy biến mã nguồn. Biết con trỏ thì mới sử dụng được 1 số thư viện STL của C++ như list, stack, Algorithm, vector, …

Quang Duong viết 19:08 ngày 30/09/2018

Cơ bản là ngôn ngữ đã che mất con trỏ ở nhiều chỗ nên mình ko thấy sự lợi hại của nó.
Đơn cử trong Java mọi đối tượng đền là con trỏ trừ các biến thuộc primitive types (byte, short, int, long, char, boolean, float và double).

Chiến Minh Nguyễn viết 19:02 ngày 30/09/2018

Theo mình thì con trỏ có tác dụng cấp phát vùng nhớ khi chạy chương trình ví dụ như bạn muốn xử lý ảnh hay video thì không thể khai báo biến chứa nó vào chương trình được. Khi làm thế file .exe chương trình sẽ rất lớn. Thay vào đó bạn sử dụng con trỏ để cấp phát bộ nhớ cho dữ liệu nạp vào và lưu nó ở trên phần RAM chưa sử dụng. Khi sử dụng xong thì giải phóng nó đi
P/s: Mình chỉ biết thế thôi có sai sót chỗ nào mong bạn thông cảm

Dép Lào viết 19:10 ngày 30/09/2018

Còn giúp giảm bộ nhớ nữa một biến bình thường là 8byte còn biến con trỏ chỉ 4byte

Văn Dương viết 19:01 ngày 30/09/2018

Dùng con trỏ không giảm được bộ nhớ.

Hưng Arsenal viết 18:58 ngày 30/09/2018

Bạn tham khảo:

http://diendan.congdongcviet.com/threads/t42977::tim-hieu-ban-chat-cua-con-tro-tu-co-ban-den-nang-cao.cpp

Anh Weasley viết 18:57 ngày 30/09/2018

đào mộ một tý . cái con-trỏ này mình cũng thích nên góp tý .
đầu tiên , HDH ( hệ điều hành ) khôn lắm . nó k cho chương trình sử dụng bộ nhớ vô tư đâu . mình nhớ là chỉ cho 256KB thôi . nên việc dùng con trỏ không giảm bộ nhớ . với dung lượng biến con trỏ là 4B hay 8B tùy vào CPU với HDH b sử dụng . con trỏ dùng thích lắm . coder dùng con trỏ để ăn cắp “tiền” của bọn HDH . cracker dùng con trỏ để crack soft . cuối cùng , mình biết con trỏ là cái làm nên cái gọi là lập-trình-hướng-đối-tượng hiện tại .

Văn Dương viết 19:08 ngày 30/09/2018

Chốt lại là mỗi mục đích : -> Dùng để trỏ
Trỏ đâu đánh đấy

Lê Đại Tú viết 19:00 ngày 30/09/2018

con trỏ không liên quan gì đến cấp phát bộ nhớ đâu Bạn. Chỉ có stack và heap thôi

Lê Đại Tú viết 19:03 ngày 30/09/2018

Vậy tại sao con trỏ truyền vào một hàm gì đó lại làm thay đổi dữ liệu ?

Lê Đại Tú viết 19:10 ngày 30/09/2018

java thì Double hay Int là con trỏ, còn int là một int bình thường. Hay
HocSinh hs = new HocSinh();

Bài liên quan
0