Nếu bạn là một nhà tư tưởng thị giác, nó có thể giúp để tưởng tượng dấu hoa thị như một lỗ đen dẫn đến giá trị dữ liệu . Do đó, nó là một con trỏ.
Dấu và là đầu đối diện của lỗ, coi đó là một dấu hoa thị làm sáng tỏ hoặc tàu vũ trụ lắc lư trong một khóa học thất thường khi phi công vượt qua quá trình chuyển đổi ra khỏi hố đen.
Tôi nhớ rất bối rối bởi C++ quá tải ý nghĩa của dấu và, để cung cấp cho chúng tôi tài liệu tham khảo. Trong nỗ lực tuyệt vọng của họ để tránh sử dụng thêm bất kỳ nhân vật nào, được biện minh bởi khán giả quốc tế sử dụng C và các vấn đề đã biết với giới hạn bàn phím, họ thêm vào một nguồn gây nhầm lẫn lớn.
Một điều có thể hữu ích trong C++ là suy nghĩ về các tham chiếu dưới dạng các con trỏ được chuẩn bị trước. Thay vì sử dụng & someVariable khi bạn vượt qua trong một đối số, bạn đã sử dụng dấu và sau khi bạn đã xác định someVariable. Sau đó, một lần nữa, điều đó có thể gây nhầm lẫn cho bạn thêm nữa!
Một trong những vật cưng của tôi ghét, mà tôi không hài lòng để xem ban hành trong các mẫu Objective-C của Apple, là bố trí theo phong cách int *someIntPointer
thay vì int* someIntPointer
IMHO, giữ dấu hoa thị với biến là một C old-fashioned phương pháp tiếp cận nhấn mạnh các cơ chế về cách bạn xác định biến, trên kiểu dữ liệu của nó.
Kiểu dữ liệu của someIntPointer
theo nghĩa đen là một con trỏ đến số nguyên và khai báo phải phản ánh điều đó. Điều này dẫn đến các yêu cầu mà bạn khai báo một biến trên mỗi dòng, để tránh lỗi vi tế như:
int* a, b; // b is a straight int, was that our intention?
int *a, *b; // old-style C declaring two pointers
int* a;
int* b; // b is another pointer to an int
Trong khi người cho rằng khả năng để khai báo con trỏ và các giá trị hỗn hợp trên cùng một dòng, cố ý, là một mạnh mẽ tính năng, tôi đã nhìn thấy nó dẫn đến lỗi và sự nhầm lẫn tinh tế.
Không được nói "C/C++". C và C++ là các ngôn ngữ khác nhau. –
Thay đổi nó, nhưng không con trỏ làm việc theo cùng một cách trong cả hai? – spencewah
C không có tham chiếu. –