Chủ đề: Thắc mắc về *&
-
26-02-2014, 12:25 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thắc mắc về *&
Anh chị chỉ giúp em *& là như thế nào ạ,
ví dụ trong code : int enQueue(NODE *&front, NODE *&rear, int value) thì *& được sử dụng như nào, và ý nghĩa của nó là gì?[IMG]images/smilies/21.gif[/IMG]View more random threads:
- Phân tích thừa số nguyên tố
- Làm sao để thoát mà không bị báo lỗi
- Hàm cắt xâu trong lập trình C. Giúp mình sửa lỗi?
- Giúp mình bài tập truyền struct vào function vs
- ghi file
- Lỗi stdprn trong fprintf mong các bác giúp đỡ
- hàm kiểm tra số tam giác
- hàm sleep(int n) trong visual c++ ?
- xác định độ dài
- Tính tích phân hàm f(x)
-
26-02-2014, 12:31 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
*& trong prototype là truyền con trỏ theo kiểu tham chiếu. (lưu ý nên viết NODE* &, ko nên viết NODE *&)
Ngoài ra là đối nhau, nhưng có thể gây segfault.
-
26-02-2014, 12:49 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
nó cũng giống truyền 1 biến bình thường theo kiểu tham chiếu đúng không anh, chỉ khác nó là con trỏ phải không ạ??
-
26-02-2014, 01:07 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nguyennhunai
Trong C thì int * x trong dãy tham số mang 2 ý nghĩa: hoặc là truyền biến int theo tham chiếu, hoặc là con trỏ int* theo tham trị.
Sau này C++ sinh thêm cái & nên đỡ.
-
26-02-2014, 01:21 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
thankyou anh nhiều ạ [IMG]images/smilies/biggrin.png[/IMG]
-
04-03-2014, 04:56 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi prog10
-
04-03-2014, 05:22 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
con trỏ 1 chiều/cấp, 2 chiều, ... thực chất cũng chỉ là dạng số nguyên thôi. Giá trị của nó là địa chỉ mà nó trỏ tới. Muốn thay đổi địa chỉ mà con trỏ đang trỏ tới thì phải truyền theo tham chiếu.
vd
int* p = new int[10];
thì p có giá trị là địa chỉ của mảng int[10] đang nằm trên heap. Vd là giá trị X.
bây giờ p cần tăng sức chứa lên gấp đôi (20) trong hàm doubleCapacity, tức là phải gán 1 địa chỉ mới Y trên heap cho giá trị của p:
- Nếu viết là doubleCapacity(int* ptr) thì khi gọi doubleCapacity(p); giá trị trong p ko thay đổi, vì giá trị của p được copy vào giá trị của ptr, rồi ptr mới chính là con trỏ được truyền vào hàm doubleCapacity. => p được truyền theo tham trị
- Nếu viết là doubleCapacity(int*& ptr), khi gọi doubleCapacity(p) thì p chính là con trỏ dược truyền vào doubleCapacity. Giá trị của p có thể thay đổi.
trong C thì 100% tham trị hết. Muốn truyền trực tiếp p vào thì phải lấy địa chỉ của p rồi truyền vào doubleCapacity, thành con trỏ 2 cấp: doubleCapacity(int** ptr); rồi thay vì chỉ cần viết ptr = ... thì phải viết *ptr = ... (đương nhiên trước đó phải giải phóng vùng int[N] cũ)
Trứng rung điều khiển từ xa Vibrator Spark Of Love Sản phẩm trứng rung bluetooth có điều khiển từ xa này được thiết kế với tông màu Rose Gold viền kim khí trải qua. kích tấc 7,4cm x 3,5cm giúp trứng...
TOP 3 trùy rung điều khiển từ xa...