Con trỏ là một công cụ lập trình cực kỳ mạnh mẽ. Họ có thể làm một số việc dễ dàng hơn, giúp cải thiện hiệu quả của chương trình của bạn, và thậm chí cho phép bạn xử lý một lượng không giới hạn của dữ liệu. Ví dụ, sử dụng con trỏ là một trong những cách để có một chức năng sửa đổi một biến được truyền cho nó. Nó cũng có thể sử dụng con trỏ để tự động phân bổ bộ nhớ, điều đó có nghĩa rằng bạn có thể viết chương trình có thể xử lý một lượng gần như không giới hạn của dữ liệu nhanh chóng - bạn không cần phải biết, khi bạn viết chương trình, bao nhiêu bộ nhớ bạn nhu cầu. Wow, đó là loại mát mẻ. Trên thực tế, nó rất mát mẻ, như chúng ta sẽ thấy trong một số các hướng dẫn tiếp theo. Để bây giờ, chúng ta hãy chỉ được một xử lý cơ bản về những gì con trỏ là gì và cách bạn sử dụng chúng. Con trỏ là gì? Tại sao bạn nên chăm sóc con trỏ là aptly tên: họ "điểm" đến các địa điểm trong bộ nhớ. Hãy suy nghĩ của một hàng, két an toàn của các kích cỡ khác nhau tại một ngân hàng địa phương. Mỗi hộp tiền gửi an toàn sẽ có một số liên kết với nó để bạn có thể nhanh chóng nhìn nó lên. Những con số này cũng giống như các địa chỉ bộ nhớ của các biến. Một con trỏ trong thế giới của két an toàn đơn giản sẽ là bất cứ điều gì mà lưu trữ các số khác két an toàn. Có lẽ bạn có một người chú giàu có được lưu trữ có giá trị trong két an toàn của mình, nhưng đã quyết định đặt vị trí thực tại khác, nhỏ hơn, két an toàn mà chỉ được lưu trữ một thẻ với số lượng của hộp lớn với các đồ trang sức thực sự. Hộp an toàn tiền gửi với các thẻ sẽ được lưu trữ vị trí của hộp khác; nó sẽ tương đương với một con trỏ. Trong máy tính, con trỏ chỉ là biến lưu trữ địa chỉ bộ nhớ, thường là địa chỉ của các biến khác. Điều thú vị là một khi bạn có thể nói về các địa chỉ của một biến, bạn sẽ sau đó có thể đi đến địa chỉ đó và lấy dữ liệu được lưu trữ trong đó. Nếu bạn xảy ra để có một mảnh lớn các dữ liệu mà bạn muốn vượt qua vào một chức năng, nó dễ dàng hơn rất nhiều để vượt qua vị trí của nó với chức năng hơn để sao chép tất cả các yếu tố của các dữ liệu! Hơn nữa, nếu bạn cần thêm bộ nhớ cho chương trình của bạn, bạn có thể yêu cầu thêm bộ nhớ từ hệ thống - làm thế nào để bạn nhận được "trở lại" rằng bộ nhớ? Hệ thống này sẽ cho bạn biết nó nằm ở đâu trong bộ nhớ; đó là để nói, bạn sẽ có được một địa chỉ bộ nhớ trở lại. Và bạn cần con trỏ để lưu trữ các địa chỉ bộ nhớ. Một lưu ý về các điều khoản: con trỏ từ có thể tham khảo hoặc đến một địa chỉ bộ nhớ chính nó, hoặc một biến lưu trữ một địa chỉ bộ nhớ. Thông thường, sự khác biệt là không thực sự quan trọng: nếu bạn vượt qua một biến con trỏ vào một chức năng, bạn đang đi qua các giá trị được lưu trong con trỏ - địa chỉ bộ nhớ. Khi tôi muốn nói về một địa chỉ bộ nhớ, tôi sẽ đề cập đến nó như là một địa chỉ bộ nhớ; khi tôi muốn có một biến lưu trữ một địa chỉ bộ nhớ, tôi sẽ gọi nó là một con trỏ. Khi một cửa hàng biến địa chỉ của một biến khác, tôi sẽ nói rằng đó là "chỉ để" biến đó. C Pointer Cú pháp Pointers đòi hỏi một chút về cú pháp mới bởi vì khi bạn có một con trỏ, bạn cần có khả năng cả hai yêu cầu bộ nhớ vị trí mà nó lưu trữ và giá trị được lưu ở vị trí bộ nhớ. Hơn nữa, kể từ khi con trỏ có phần đặc biệt, bạn cần phải cho các trình biên dịch khi bạn khai báo biến con trỏ của bạn là biến là một con trỏ, và nói với các trình biên dịch những gì loại bộ nhớ nó trỏ tới. Việc khai báo con trỏ trông như thế này:
*;
Ví dụ, bạn có thể khai báo một con trỏ để lưu địa chỉ của một số nguyên với cú pháp sau:
int * points_to_integer;
Chú ý việc sử dụng *. Đây là chìa khóa để khai báo một con trỏ; nếu bạn thêm nó trực tiếp trước tên biến, nó sẽ khai báo biến là một con trỏ. Ghi chú nhỏ: nếu bạn khai báo nhiều con trỏ trên cùng một dòng, bạn phải đặt trước mỗi trong số họ với một dấu sao:
/ * một con trỏ, một int thường * /
int * pointer1, nonpointer1; / * hai con trỏ * / int * pointer1, * pointer2; Như tôi đã đề cập, có hai cách để sử dụng con trỏ để truy cập thông tin: có thể có nó cung cấp cho các địa chỉ thực tế để biến khác. Để làm như vậy, chỉ đơn giản là sử dụng tên của con trỏ mà không *. Tuy nhiên, để truy cập vào bộ nhớ vị trí thực tế và giá trị được lưu trữ ở đó, sử dụng *. Tên kỹ thuật này làm việc này là dereferencing con trỏ; trong bản chất, bạn đang dùng các tham chiếu đến một số địa chỉ bộ nhớ và sau đó, để lấy các giá trị thực tế. Nó có thể được khó khăn để theo dõi khi nào bạn nên thêm dấu hoa thị. Hãy nhớ rằng sử dụng tự nhiên của con trỏ là để lưu trữ một địa chỉ bộ nhớ; vì vậy khi bạn sử dụng con trỏ: call_to_function_expecting_memory_address (con trỏ); sau đó nó để đánh giá địa chỉ. Bạn phải thêm cái gì thêm, dấu hoa thị, để lấy các giá trị được lưu trữ tại địa chỉ. Bạn có lẽ sẽ làm điều đó một awful. Tuy nhiên, con trỏ tự nó là vụ phải lưu giữ một địa chỉ, vì vậy khi bạn sử dụng con trỏ để trần, bạn sẽ có được địa chỉ đó lại. Chỉ vào cái gì đó: Lấy một Địa chỉ Để có một con trỏ chỉ đến một biến khác đó là cần thiết để có địa chỉ bộ nhớ của biến đó cũng có. Để có được các địa chỉ bộ nhớ của một vari
đang được dịch, vui lòng đợi..
