Khởi tạo con trỏ
Khi khai báo con trỏ có thể chúng ta sẽ muốn chỉ định rõ ràng chúng sẽ trỏ tới
biến nào,
int number;
int *tommy = &number;
là tương đương với:
int number;
int *tommy;
tommy = &number;
Trong một phép gán con trỏ chúng ta phải luôn luôn gán địa chỉ mà nó trỏ tới
chứ không phải là giá trị mà nó trỏ tới. Bạn cần phải nhớ rằng khi khai báo một
biến con trỏ, dấu sao (
*
) được dùng để chỉ ra nó là một con trỏ, và hoàn toàn
khác với toán tử tham chiếu. Đó là hai toán tử khác nhau mặc dù chúng được
viết với cùng một dấu. Vì vậy, các câu lệnh sau là không hợp lệ:
int number;
int *tommy;
*tommy = &number;
Như đối với mảng, trình biên dịch cho phép chúng ta khởi tạo giá trị mà con trỏ
trỏ tới bằng giá trị hằng vào thời điểm khai báo biến con trỏ:
char * terry = "hello";
trong trường hợp này một khối nhớ tĩnh được dành để chứa
"hello"
và một con
trỏ trỏ tới kí tự đầu tiên của khối nhớ này (đó là kí tự h ) được gán cho
terry
.
Nếu
"hello"
được lưu tại địa chỉ 1702, lệnh khai báo trên có thể được hình
dung như thế này: