theo dõi

Gần nhất :

Tags

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : C++
Hỏi lúc:
Lượt xem: 1,583

Sự khác biệt giữa * và -> trong C++?

Võ Tấn Dũng Võ Tấn Dũng
 07  02  00
06 bình chọn hữu ích bởi Võ Mai Nhi, Nguyễn Tony Tạ Đình Cường ... (tất cả)
1,583 xem 08 theo dõi 06 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Vũ Nguyên Phong Vũ Nguyên Phong
 03  00  01
03 bình chọn hữu ích bởi Bùi Ðức Siêu, Tạ Thanh Việt Ngô Ngọc Hạnh

* chỉ dùng để khai báo con trỏ

Nếu bạn muốn chỉ tới đích của 1 con trỏ, điều này có nghĩa là sẽ có được giá trị/đối tượng trong con trỏ. Bạn có thể sử dụng cả 2, trong đó -> là dễ đọc hơn.

  • Với * bạn trỏ tới đích của con trỏ và có được giá trị/đối tượng của nó được trỏ vào.
  • Khi -> đang được sử dụng để trỏ tới đích của con trỏ và được tiếp cận như một thành viên của đối tượng mà nó đang trỏ vào. Lưu ý rằng -> chỉ có thể được sử dụng cho các đối tượng và không cho giá trị đầu tiên.

Ví dụ nhỏ:

#include <iostream>
using namespace std;

class A {
     public:
          int var;
}; 

int main() {
     A * a = new A(); // Sử dụng * để khai báo con trỏ
     (*a).var = 5; // Một cách để tới đích của một con trỏ và có được giá trị của var
     cout << a->var << endl; /* Sẽ in 5, vì đây là một cách khác để tới đích của một con trỏ */
     return 0;
}
1,313 xem 03 hữu ích trả lời –
Nguyễn Tony Nguyễn Tony
 03  00  01
03 bình chọn hữu ích bởi Võ Đức Minh, Hoàng Khánh Hoàn Nguyễn Tony

* đơn giản là một con trỏ tới đích. Nếu tôi có một con trỏ đến một lớp được gọi là Rectr là một con trỏ đến một Rect, sau đó *r là một Rect rằng điểm tới r.

Giả sử rằng Rect có một trường height. Trong C, bạn có thể nói *(r).height để truy cập vào giá trị height. Tuy nhiên, C và C ++ có một cách ngắn hơn và ký hiệu hay dùng: r -> height-> Chỉ có nghĩa là "tới đích và truy cập trường".

1,316 xem 03 hữu ích trả lời –