Con trỏ
Con trỏ đon giản chỉ là địa chỉ của một vị trí bộ nhớ và cưng cấp cách gián tiếp đế truy xuất dữ liệu trong bộ nhớ. Biến con trỏ được định nghĩa để “trỏ tới” dữ liệu thuộc kiểu dữ liệu cụ thể. Ví dụ
int *ptr1; //trỏ tới một số nguyên
char *ptr2; //trỏ tới một ký tự
Giá trị của một biến con trỏ là địa chỉ mà nó trỏ tới. Ví dụ, với các định nghĩa đã có và
int num;
Chúng ta có thể viết
ptr1 = #
Ký tự & là toán tử lấy địa chỉ; nó nhận một biến như là một đối số và trả về địa chỉ bộ nhớ của biến đó. Tác động của việc gán trên là địa chỉ của num được khởi tạo với ptr1. Vì thế, chúng ta nói rằng ptr1 trỏ tới num. Hình bên dưới minh họa sơ lược về điều này
<Hình minh họa>
Với con trỏ ptr1 trỏ tới num thì biểu thức ptr1 nhận giá trị của biến ptr1 trỏ tới và vì thế nó tương đương với num. Ký hiện là toán tử lấy giá trị; nó nhận con trỏ như là một đối số và trả về nội dung của vị trí mà con trỏ trỏ tới.
Thông thường thì kiếu con trỏ phải khớp với kiếu dữ liệu mà được trỏ tới. Tuy nhiên, một con trỏ kiếu void* sẽ hợp với tất cả các kiếu. Điều này thật thuận tiện đế định nghĩa các con trỏ có thể trổ đến dữ liệu của những kiểu khác nhau hay là các kiểu dữ liệu gốc không được biết. Con trỏ có thể được ép (chuyển kiểu) thành một kiểu khác. Ví dụ,
ptr2=(char*) ptrl;
Chuyến con trỏ ptrl thành con trỏ chai' trước khi gán nó tới con trỏ ptr2.
Không quan tâm đến kiểu của nó thì con trỏ có thể được gán tới giá trị null (gọi là con trỏ null). Con trở null được sử dụng để khởi tạo cho các con trỏ và tạo ra điểm kết thúc cho các cấu trúc dựa trên con trỏ (ví dụ, danh sách liên kết).