Xin chào mọi người.
Tôi có học về con trỏ trong C/C++. Nhưng theo tôi biết biến con trỏ chia ra làm 3 phần:
+ Địa chỉ con trỏ.
+ Vùng nhớ con trỏ. ( Để lưu giá trị của con trỏ )
+ Miền nhớ con trỏ. ( để lưu địa chỉ đến biến mà con trỏ trỏ tới )
Khi ta khai báo biến con trỏ
Thì tự khắc con trỏ đã có Địa chỉ con trỏ và Miền nhớ con trỏ. Tức là khi ta trỏ đến biến a thì Miền nhớ con trỏ sẽ lưu địa chỉ của biến a. Tuy nhiên, lúc này thì vùng nhớ của con trỏ vẫn chưa được thiết lập.
Sau đó, giả sử chúng ta thiết lập một vùng nhớ:
int *b = new int;
Thì lúc này, HĐH sẽ cấp một vùng nhớ ngẫu nhiên cho con trỏ để con trỏ trỏ đến vùng nhớ đó. Vậy đã có vùng nhớ.
Sau tất cả, tôi muốn hỏi là:
Trước khi ta thiết lập một vùng nhớ, khi ta khai báo con trỏ, thì nó có sẵn ô nhớ nào để lưu địa chỉ của biến mà nó trỏ đến chưa ? Nếu có ô nhớ như thế, thì khi ta không cần trỏ, ta cần cấp cho 1 vùng nhớ tại sao nó không tự lấy vùng nhớ lưu địa chỉ để làm vùng nhớ lưu giá trị như thế thì thật lãng phí vùng nhớ dùng để lưu địa chỉ kia.
Tôi có học về con trỏ trong C/C++. Nhưng theo tôi biết biến con trỏ chia ra làm 3 phần:
+ Địa chỉ con trỏ.
+ Vùng nhớ con trỏ. ( Để lưu giá trị của con trỏ )
+ Miền nhớ con trỏ. ( để lưu địa chỉ đến biến mà con trỏ trỏ tới )
Khi ta khai báo biến con trỏ
Mã:
int a;
int *b;
Sau đó, giả sử chúng ta thiết lập một vùng nhớ:
int *b = new int;
Thì lúc này, HĐH sẽ cấp một vùng nhớ ngẫu nhiên cho con trỏ để con trỏ trỏ đến vùng nhớ đó. Vậy đã có vùng nhớ.
Sau tất cả, tôi muốn hỏi là:
Trước khi ta thiết lập một vùng nhớ, khi ta khai báo con trỏ, thì nó có sẵn ô nhớ nào để lưu địa chỉ của biến mà nó trỏ đến chưa ? Nếu có ô nhớ như thế, thì khi ta không cần trỏ, ta cần cấp cho 1 vùng nhớ tại sao nó không tự lấy vùng nhớ lưu địa chỉ để làm vùng nhớ lưu giá trị như thế thì thật lãng phí vùng nhớ dùng để lưu địa chỉ kia.
Sửa lần cuối: