30/09/2018, 17:50

Tại sao lúc đầu khai báo con trỏ để cấp bộ nhớ...sau đó thì lại dùng nó như một mảng?

Tình hình là em vừa học phần cấp phát động xong…không hiểu tại sao lúc đầu khai báo con trỏ để cấp bộ nhớ…sau đó thì lại dùng nó như một mảng (!?) anh/chị giải thích giùm em hộ phát

Mai Anh Dũng viết 20:03 ngày 30/09/2018

Bởi vì vùng nhớ cấp phát cho một con trỏ có thể được truy cập như mảng. Về bản chất, vùng nhớ cấp phát cho một con trỏ là một vùng nhớ liên tiếp.

Mảng quản lý một vùng nhớ liên tiếp.

Khác biệt giữa mảng và vùng nhớ được cấp phát động ở chỗ, mảng là vùng nhớ tĩnh, chỉ được khai báo số lượng vùng nhớ lúc code và không thay đổi được khi chạy chương trình. Trong khi đó vùng nhớ cấp cho con trỏ có thể thay đổi được tùy vào nhu cầu tại mỗi thời điểm khác nhau.

Ví dụ: Nếu một lớp học có n học sinh thì nhập vào n học sinh, chương trình sẽ cấp vùng nhớ cho n học sinh.

Nguyễn Hoàng Trung viết 19:59 ngày 30/09/2018

Dạ ý em muốn hỏi là tại sao cú pháp nó lại tương tự ấy @@ em nghĩ nó phải khác chứ

Minh Hoàng viết 20:00 ngày 30/09/2018

Tại sao phải khác nhỉ?
Nếu như mình khai báo char a[100]; thì nó được để trong stack memory, nhưng cấp phát động thì nó nằm trong heap memory. Cả hai đều là vùng nhớ chỉ khác nơi chứa thôi.

Nguyễn Hoàng Trung viết 19:54 ngày 30/09/2018

Ồ…em cảm ơn

Bài liên quan
0